【发布时间】:2016-02-04 07:53:57
【问题描述】:
有A、B、C三个表,表A、B的src列是外键。 Table 是 A.ID 和 B.ID 的关联表。
mysql 中是否有任何约束以确保插入到表 C 中的每一行都必须遵循约束:A.src 的 ID 等于 B.src。
例如在下面的表C中,row 1 7是允许的,因为A.ID和B.ID的SRC都是35,但是row 2 7是非法的,因为A.ID的SRC是46但是B.ID 为 35。
Table A
ID SRC
1 35
2 46
3 46
Table B
ID SRC
6 46
7 35
8 46
Table C
A_ID B_ID
1 7
3 6
是否可以设置任何约束或机制来确保插入到表 C 中的每一行都遵循常规?
谢谢。
【问题讨论】:
-
Oracle、MySQL 和 RDB,这是一个非常罕见的组合......你真的在使用所有这些产品吗?
-
我认为这并不罕见,我现在使用mysql,之前使用过Oracle,我也有兴趣是否在其他Relation-Database中有约束。
-
不要只在不直接涉及的情况下标记产品...标记您正在使用的 dbms 产品以面对问题。您可能已经注意到 MySQL 的约束处理与 Oracle 的有点不同...
-
是的,你是对的,mysql是专注的,我知道dbms之间的约束是不同的。谢谢你的建议。
-
我还是不明白,你说
table c必须遵循约束:A.src 等于 B.src 的 ID。 但对你来说也是说row 2 7是非法的,因为A.ID 的SRC 是46,而B.ID 的SRC 是35。 如果你看到row 3 6都具有相同的SRC,那就是意思是在table C中应该有row 3 8、row 2 6和row 2 8,对吧?