我正在使用 MySQL 版本 5.5.25,并尝试在同一个表上创建从 id_parent
到 id
的外键。
CREATE TABLE `acl_roles` (
`id` int(20) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(60) NOT NULL,
`id_parent` int(20) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FK_acl_roles` (`id_parent`),
CONSTRAINT `FK_acl_roles` FOREIGN KEY (`id_parent`) REFERENCES `acl_roles` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8
当我这样做的时候
ALTER TABLE `acl_roles` ADD CONSTRAINT `FK_acl_roles` FOREIGN KEY (`id_parent`) REFERENCES `acl_roles` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT ;
由于某种原因,后者执行时没有错误,但当我执行 SHOW CREATE TABLE acl_roles
时,我得到了完全相同的架构,并且无论我运行查询多少次,都不会应用限制。
最佳答案
ON DELETE RESTRICT ON UPDATE RESTRICT
是 FK 约束的默认行为,这就是为什么您在查看架构时看不到任何差异。这是暗示的。
关于MySQL 外键限制未保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19719389/