MySQL 外键限制未保存

标签 mysql foreign-keys

我正在使用 MySQL 版本 5.5.25,并尝试在同一个表上创建从 id_parentid 的外键。

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/

相关文章:

mysql - Mysql 服务器上的分片

MySql排除查询

mysql - 没有笛卡尔积的单个 mysql 查询中的多个多对多 JOIN

JOIN-Query 中的 MySQL Bug LIMIT 更改记录中的值

php - PDO 持久连接缓存要求

具有来自同一张表的 2 个外键的 Django 模型

iOS SQLite : How to automatically set foreign key?

数据库:大量的外键

java - 如何在android studio中使用sqlite获得多个外键的良好语法

php - PHP脚本中FOREIGN KEY SQL语法错误