您的位置:首页 > 数据库 > MySQL

MySql 外键约束 之CASCADE、SET NULL、RESTRICT、NO ACTION分析和作用

2016-02-01 10:47 811 查看
MySQL有两种常用的引擎类型:MyISAM和InnoDB。目前只有InnoDB引擎类型支持外键约束。InnoDB中外键约束定义的语法如下:

ALTER TABLE tbl_name
ADD [CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (index_col_name, ...)
REFERENCES tbl_name (index_col_name,...)
[ON DELETE reference_option]
[ON UPDATE reference_option]


例如:

ALTER TABLE `user_resource` CONSTRAINT `FKEEAF1E02D82D57F9` FOREIGN KEY (`user_Id`) REFERENCES `sys_user` (`Id`)


InnoDB也支持使用ALTER TABLE来删除外键:

ALTER TABLE `user_resource` DROP FOREIGN KEY `FKEEAF1E02D82D57F9`;


CASCADE

在父表上update/delete记录时,同步update/delete掉子表的匹配记录

SET NULL

在父表上update/delete记录时,将子表上匹配记录的列设为null (要注意子表的外键列不能为not null)

NO ACTION

如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作

RESTRICT

同no action, 都是立即检查外键约束

SET NULL

父表有变更时,子表将外键列设置成一个默认的值 但Innodb不能识别
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: