SQL ON UPDATE CASCADE-复合键

时间:2018-12-13 15:35:22

标签: sql foreign-keys

我有2张桌子

Table1(PKFK1, PKFK2)
Table2(PKFK1, PKFK2, PKFK3)

我想对table2进行更新级联,以便每次在table1中更新pkfk2时都在table2中进行相同的操作。我尝试了以下方法:

alter table Table2
ADD CONSTRAINT fk_cascadeUP FOREIGN KEY (PKFK1) REFERENCES Table1(PKFK1) ON UPDATE CASCADE,
ADD CONSTRAINT fk_cascadeUP2 FOREIGN KEY (PKFK2) REFERENCES Table1 (PKFK2) ON UPDATE CASCADE;

这给出了一个错误。如何进行级联更新?

2 个答案:

答案 0 :(得分:1)

每个ALTER TABLE必须是其自己的语句。试试这个:

alter table Table2
ADD CONSTRAINT fk_cascadeUP FOREIGN KEY (PKFK1) REFERENCES Table1(PKFK1) ON UPDATE CASCADE

alter table Table2
ADD CONSTRAINT fk_cascadeUP2 FOREIGN KEY (PKFK2) REFERENCES Table1 (PKFK2) ON UPDATE CASCADE

答案 1 :(得分:0)

首先,您将必须删除外键,然后根据需要添加外键。从表中删除外键,然后使用“ ON UPDATE CASCADE”添加外键。
有点像:

ALTER TABLE Table2
DROP FOREIGN KEY [foreign key name]
ADD CONSTRAINT fk_cascadeup2 FOREIGN KEY (PKFK2) REFERENCES Table1 (PKFK2) ON UPDATE 
CASCADE;

另一种方法可以是“设置foreign_key_checks = 0”,并且在更改外键之后,可以将其设置回“ 1”。