MYSQL 复合外键

2013-12-07 16:34:59 +08:00
 chenyg32
每次来这里总是受益匪浅。
假如2个表,S,T
3798 次点击
所在节点    程序员
7 条回复
chenyg32
2013-12-07 16:49:33 +08:00
小弟初学数据库,望路过的大神多多指教。
假如2个表,S,T
假如S有2个主键a,b;T也有2个主键a,b。
我想达到的效果是,T的2个主键分别是S的2个主键的外键。
[当且仅当S.a=T.a以及S.b=T.b的时候,它们才有关系。]
foreign key (c,d) references S(a,b) on delete cascade;
这样写好像失败……
ps.我有点知道复合属性当主键或外键不是很好,但真的遇到这种情况了怎么办,比如现在……
chenyg32
2013-12-07 16:54:36 +08:00
求指教呀~感激不尽~
chenyg32
2013-12-07 18:54:07 +08:00
一定是我写得不够详细。
我就想问一句话,可以将2个属性一起当外键吗?
zerosyn
2013-12-07 19:25:05 +08:00
可以
FOREIGN KEY (`c`, `d`) REFERENCES `S` (`a`, `b`) ON DELETE CASCADE
chenyg32
2013-12-07 20:51:17 +08:00
@zerosyn 你确定这样可以吗~~ 我下午是这样创建但并不成功,虽然没有报错,但效果跟没写的一样
zerosyn
2013-12-07 20:58:38 +08:00
@chenyg32
有效果的,S 表不存在的 a, b 键值对,T 表是不能使用的;S 表删除记录的时候,T 表也会对应删掉
chenyg32
2013-12-08 14:10:02 +08:00
@zerosyn 已解决~就是这样 Thanks a lot

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/92191

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX