我使用的是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
时,我得到完全相同的模式,无论我运行查询多少次都不会应用限制。
答案 0 :(得分:2)
ON DELETE RESTRICT ON UPDATE RESTRICT
是FK约束的默认行为,这就是您在查看架构时看不到差异的原因。这是隐含的。