sql 外键 on update cascade 和 on delete cascade 作用区别?
来源:互联网 发布:两组数据找相同的差异 编辑:程序博客网 时间:2024/06/10 21:18
这是数据库外键定义的一个可选项,用来设置当主键表中的被参考列的数据发生变化时,外键表中响应字段的变换规则的。update 则是主键表中被参考字段的值更新,delete是指在主键表中删除一条记录:
on update 和 on delete 后面可以跟的词语有四个
no action , set null , set default ,cascade
no action 表示 不做任何操作,
set null 表示在外键表中将相应字段设置为null
set default 表示设置为默认值(restrict)
on update 和 on delete 后面可以跟的词语有四个
no action , set null , set default ,cascade
no action 表示 不做任何操作,
set null 表示在外键表中将相应字段设置为null
set default 表示设置为默认值(restrict)
cascade 表示级联操作,就是说,如果主键表中被参考字段更新,外键表中也更新,主键表中的记录被删除,外键表中改行也相应删除
以下是4张表:
CREATE TABLE `groups` ( `groupid` bigint(20) unsigned NOT NULL, `name` varchar(64) NOT NULL DEFAULT '', `internal` int(11) NOT NULL DEFAULT '0', `flags` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`groupid`), KEY `groups_1` (`name`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `scripts` ( `scriptid` bigint(20) unsigned NOT NULL, `name` varchar(255) NOT NULL DEFAULT '', `command` varchar(255) NOT NULL DEFAULT '', `host_access` int(11) NOT NULL DEFAULT '2', `usrgrpid` bigint(20) unsigned DEFAULT NULL, `groupid` bigint(20) unsigned DEFAULT NULL, `description` text NOT NULL, `confirmation` varchar(255) NOT NULL DEFAULT '', `type` int(11) NOT NULL DEFAULT '0', `execute_on` int(11) NOT NULL DEFAULT '1', PRIMARY KEY (`scriptid`), KEY `scripts_1` (`usrgrpid`), KEY `scripts_2` (`groupid`), CONSTRAINT `c_scripts_1` FOREIGN KEY (`usrgrpid`) REFERENCES `usrgrp` (`usrgrpid`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `c_scripts_2` FOREIGN KEY (`groupid`) REFERENCES `groups` (`groupid`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `users_groups` ( `id` bigint(20) unsigned NOT NULL, `usrgrpid` bigint(20) unsigned NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `users_groups_1` (`usrgrpid`), CONSTRAINT `c_users_groups_1` FOREIGN KEY (`usrgrpid`) REFERENCES `usrgrp` (`usrgrpid`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `usrgrp` ( `usrgrpid` bigint(20) unsigned NOT NULL, `name` varchar(64) NOT NULL DEFAULT '', `gui_access` int(11) NOT NULL DEFAULT '0', `users_status` int(11) NOT NULL DEFAULT '0', `debug_mode` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`usrgrpid`), KEY `usrgrp_1` (`name`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1.
users_groups表引用外键 usrgrp.usrgrpid 并设置 ON DELETE CASCADE ON UPDATE CASCADE
scripts表引用外键 usrgrp.usrgrpid 并设置 ON DELETE CASCADE ON UPDATE CASCADE所以对已引用usrgrp.usrgrpid字段的修改对应引用的表也会修改
2.
scripts.groupid 引用groups.groupid 没有设置操作关联属性
CONSTRAINT `c_scripts_2` FOREIGN KEY (`groupid`) REFERENCES `groups` (`groupid`)
对已引用groups.grouppid字段不可修改
0 0
- sql 外键 on update cascade 和 on delete cascade 作用区别?
- on update cascade 和on delete cascade 的作用
- on update cascade 和on delete cascade 的区别
- ON DELETE CASCADE ON UPDATE CASCADE
- ON UPDATE CASCADE ON DELETE CASCADE
- MySQL 设置cascade on delete on update
- SQL SERVER 主键和外键中的 级联删除(ON DELETE CASCADE)和级联更新(ON UPDATE CASCADE)
- SQL SERVER 主键和外键中的 级联删除(ON DELETE CASCADE)和级联更新(ON UPDATE CASCADE)
- FOREIGN KEY 约束的ON UPDATE CASCADE 和 ON DELETE CASCADE
- 数据库级联更新 on update cascade和级联删除 on delete cascade
- SQL Server 级联删除 ON DELETE CASCADE
- sql 联级删除 ON DELETE CASCADE
- On delete cascade和on delete set null
- on delete set null & on delete cascade
- on delete set null & on delete cascade
- mysql的on delete restrict与on ordelete cascade区别
- mysql的on delete restrict与on ordelete cascade区别
- ON DELETE CASCADE(级联删除)
- 分布式进程
- 一个perl URLencode URLdecode的方法 (2009-07-22 15:47:36)转载▼
- AsyncTask的简单使用
- AJAX简单使用介绍
- shell 去除 ^M
- sql 外键 on update cascade 和 on delete cascade 作用区别?
- 使用pdfbox解析pdf文档信息(属性,内容,图片)
- Android属性之build.prop生成过程分析
- JQuery Ajax的实现原理以及二次封装通用的Ajax
- eclipse+webservice开发实例
- #chkconfig: 2345 20 80
- UITableViewCell高度自适应探索--UITableView+FDTemplateLayoutCell(转载)
- 事件传递
- linux下的单实例进程 - 一个进程不能重复启动