SQL ON UPDATE CASCADE - составной ключ - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть 2 таблицы

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

Я хочу сделать каскад обновления для table2, чтобы каждый раз, когда pkfk2 обновлялся в table1, выполнял то же самое в 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 голосов
/ 13 декабря 2018

Сначала вам нужно будет удалить внешний ключ, а затем добавить внешний ключ с нужными вам требованиями.Удалите внешний ключ из таблицы, а затем добавьте внешний ключ с помощью «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;

Другим методом может быть «set foreign_key_checks = 0», и после изменения внешнего ключа вы можете установить его обратно в «1».

0 голосов
/ 13 декабря 2018

Каждый 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...