Как я могу изменить внешний ключ? - PullRequest
1 голос
/ 15 марта 2011

Мне интересно, можно ли изменить внешний ключ?

FOREIGN KEY (member) REFERENCES scores (level) ON DELETE CASCADE,

И я хотел бы изменить его на:

FOREIGN KEY (member, subject) REFERENCES scores (level, subject) ON DELETE set null,

Возможно ли это?

Ответы [ 2 ]

2 голосов
/ 15 марта 2011

Нельзя изменить ключ в одном операторе, см. Синтаксис ALTER TABLE , в котором нет доступного ALTER CONSTRAINT.

Вы должны использовать 2 оператора ALTER TABLE, чтобы выполнить то, что вы хотите.

Удалите ключ в первом, используя ALTER TABLE DROP FOREIGN KEY.Повторно создайте его с новыми столбцами во втором, используя ALTER TABLE ADD CONSTRAINT FOREIGN KEY.

Вы можете инкапсулировать оба в одной транзакции, чтобы сделать атомарную модификацию.

0 голосов
/ 15 марта 2011

вы пробовали команду alter table?

http://www.w3schools.com/sql/sql_foreignkey.asp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...