MySql 外键约束 之CASCADE、SET NULL、RESTRICT、NO ACTION分析和作用
2016-02-01 10:47
811 查看
MySQL有两种常用的引擎类型:MyISAM和InnoDB。目前只有InnoDB引擎类型支持外键约束。InnoDB中外键约束定义的语法如下:
例如:
InnoDB也支持使用ALTER TABLE来删除外键:
CASCADE
在父表上update/delete记录时,同步update/delete掉子表的匹配记录
SET NULL
在父表上update/delete记录时,将子表上匹配记录的列设为null (要注意子表的外键列不能为not null)
NO ACTION
如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作
RESTRICT
同no action, 都是立即检查外键约束
SET NULL
父表有变更时,子表将外键列设置成一个默认的值 但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不能识别
相关文章推荐
- Mysql中如何实现某字段数据自动加1
- 数据库之Mac下配置MySQL
- 最近用到的mysql函数
- mysql-cluster-7.4.10-64位集群下载地址
- [Windows Server 2008] MySQL单数据库迁移方法
- Mysql使用常识
- Emoji表情符号录入MySQL数据库报错的解决方案
- mysql备份
- MySql.Data.MySqlClient.EF6 配置
- MySQL内核整理(一)
- MySQL的安装
- MySQL教程及经常使用命令1.1
- 在MYSQL里使用哪种格式存储图片?之解惑总结
- MySQL中锁的类型
- MySQL C API by Example
- mysql datetime 时间比较
- mysql中datetime到time_t转换
- mysql ERROR------FULLTEXT
- mysql 并发 行锁 inoodb
- mysqldump只导出数据或者只导出表结构