我以前做过:
ALTER TABLE `cms__model__file_taggable_tag` ADD CONSTRAINT
cms__model__file_taggable_tag_id_cms__model__file_id FOREIGN KEY (id) REFERENCES
cms__model__file (id), ADD CONSTRAINT
cms__model__file_taggable_tag_tag_id_taggable_tag_id FOREIGN KEY (tag_id)
REFERENCES taggable_tag (id) ON DELETE CASCADE ON UPDATE CASCADE;
但我打算执行(忘记添加更新级联约束):
ALTER TABLE `cms__model__file_taggable_tag` ADD CONSTRAINT
cms__model__file_taggable_tag_id_cms__model__file_id FOREIGN KEY (id) REFERENCES
cms__model__file (id) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT
cms__model__file_taggable_tag_tag_id_taggable_tag_id FOREIGN KEY (tag_id)
REFERENCES taggable_tag (id) ON DELETE CASCADE ON UPDATE CASCADE;
我怎样才能删除以前的约束并应用正确的约束?
尝试过:
ALTER TABLE `cms__model__file_taggable_tag` DROP CONSTRAINT
cms__model__file_taggable_tag_id_cms__model__file_id
得到:
#1064 - You have an error in your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near 'CONSTRAINT
cms__model__file_taggable_tag_id_cms__model__file_id' at line 1
最佳答案
使用 SHOW CREATE TABLE tableName
检查 MySQL 是否实际创建了约束以及它是否更改(截断)了它的名称。
然后使用DROP FOREIGN KEY
,而不是DROP CONSTRAINT
:
ALTER TABLE cms__model__file_taggable_tag
DROP FOREIGN KEY cms__model__file_taggable_tag_id_cms__model__file_id
查看 MySQL 文档: ALTER TABLE 和 FOREIGN KEY Constraints
关于mysql - 更改 SQL 表上的 ondelete 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7264011/