2016-08-18 42 views
0

我有一个表(a)应该有一个列“user_id”,这是其他表(b)或(c)的外键。 因此,它指向表b或c(只有一个,而不是两个)。MySQL:是否可以为两个不同的表格列创建外键?

这甚至可能在MySQL?我能拿出最好的事情是以下(但你可以看到,我有“user_ID的”在我的“一” - 表两次,这是不是很好,因为这两个值中的一个将永远是空的。

enter image description here

非常感谢你!

+0

为什么不呢?只要你使用不同的钥匙,你可以 – Mojtaba

+0

谢谢你的回复。请看上面的附图。问题:是否可以将“user_id_a”和“user_id_b”合并到表“tbl_a”的一个列/字段中? – Tream

+0

没有。这是针对ACID的。实际上,你必须保持你想要'xor'运算符b或c但不能同时运行的方式 – Mojtaba

回答

0

嗨这就是所谓的多态关联和使用MySQL外键约束你不能强制执行。

为了要么userId_a null或user_id_b空,你可以创建一个检查约束条件

CONSTRAINT CHECK (user_id_a IS NOT NULL OR user_id_b IS NOT NULL) 
相关问题