我该如何修改外键?

时间:2011-03-15 15:47:35

标签: mysql foreign-keys

我想知道是否可以修改外键?

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

我想将其更改为:

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

有可能吗?

3 个答案:

答案 0 :(得分:2)

您无法在单个语句中修改密钥,请参阅ALTER TABLE语法,其中没有可用的ALTER CONSTRAINT。

您必须使用2个ALTER TABLE语句来完成您想要的任务。

使用ALTER TABLE DROP FOREIGN KEY删除第一个中的键。 使用ALTER TABLE ADD CONSTRAINT FOREIGN KEY在第二个中使用新列重新创建它。

您可以将两者封装在一个事务中以进行原子修改。

答案 1 :(得分:0)

你试过alter table命令吗?

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

答案 2 :(得分:0)

在MySql中,您可以通过遵循Tom Tresansky响应来完成此操作,这将为我们提供以下语法:

ALTER TABLE `table_name` DROP FOREIGN KEY `key_name`;
ALTER TABLE `table_name` ADD CONSTRAINT `constraint_name` FOREIGN KEY (`new_key_name`) 
REFERENCES `other_table_name` ('other_table_id') ON UPDATE CASCADE ON DELETE CASCADE;