繁体   English   中英

外键:单个字段引用多个字段(在同一个表中)

[英]Foreign Key: Single Field Referencing Multiple Fields (In Same Table)

我对MySQL中的外键使用相对较新,希望对它们提供一些帮助。

我的问题是我有一个包含许多列的表,其中两列依赖于另一个表中的键。 一般方案是这样的,其中'a'和'b'是显示其关系的列:

Table 1 (a)
Table 2 (a,b)
Table 3 (a,b) <-- Table in question

我在表3中有一个外键,它将级联表1中发生的更新和删除。我想要做的是更新和删除在表3中更改表3中将列b设置为NULL(a应该保持不变在这种情况下)。 有没有办法使用外键设置这种关系? 我是否会更好地使用触发器(之前从未使用过)?

先感谢您!

编辑:为了进一步说明,表2将a和b作为其主键,表2中的更改将导致表3中的b反映这些更改。

一个例子:

Table 1:
a
1
2
Table 2:
a  b
1  1
1  2
2  1
2  2
Table 3:
a  b
1  1
2  1
2  2

从表2中删除第1行目前导致:

Table 1:
a
1
2
Table 2:
a  b
1  2
2  1
2  2
Table 3:
a  b
1  NULL
2  NULL
2  2

我想要的是:

Table 1:
a
1
2
Table 2:
a  b
1  2
2  1
2  2
Table 3:
a  b
1  NULL
2  1
2  2

外键也可以使用SET NULL (而不是ON CASCADE )定义,您可以混合使用这些定义。 例:

CREATE TABLE Table3 (
    a INT,
    b INT NULL,
    FOREIGN KEY (a) REFERENCES Table1(a)
        ON DELETE CASCADE ON UPDATE CASCADE,
    FOREIGN KEY (b) REFERENCES Table2(b)
        ON DELETE SET NULL ON UPDATE SET NULL
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM