我想知道是否可以修改外键?
FOREIGN KEY (member) REFERENCES scores (level) ON DELETE CASCADE,
我想将其更改为:
FOREIGN KEY (member, subject) REFERENCES scores (level, subject) ON DELETE set null,
有可能吗?
答案 0 :(得分:2)
您无法在单个语句中修改密钥,请参阅ALTER TABLE语法,其中没有可用的ALTER CONSTRAINT。
您必须使用2个ALTER TABLE语句来完成您想要的任务。
使用ALTER TABLE DROP FOREIGN KEY删除第一个中的键。 使用ALTER TABLE ADD CONSTRAINT FOREIGN KEY在第二个中使用新列重新创建它。
您可以将两者封装在一个事务中以进行原子修改。
答案 1 :(得分:0)
你试过alter table命令吗?
答案 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;