那 么如果我删除用户表中ST001对应记录时,则根据ON DELETE SET NULL规则,文件表中FileOwner应该被设置为null,动手尝试后也确实如此;如果我将用户表中ST001改为ST003,则根据ON UPDATE CASCADE规则,文件表中FileOwner应该连锁设置为ST003,也的确如此。 外键的使用对于减少数据库冗余性,以及保证数据完整性和一致性有很...
(1)restrict方式:同no action,都是立即检查外键约束; - - 限制,指的是如果子表引用父表的某个字段的值,那么不允许直接删除父表的该值。 1. (2)cascade方式:在父表上update/delete记录时,同步update/delete子表的匹配记录 ; On delete cascade从mysql3.23.50开始可用,on update cascade从mysql4.0.8开始可用 ...
mysql> insert into t_user values (3,'maiqi',3); //参照完整性测试,不能插入在主表中不存在的外键值 ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`test`.`t_user`, CONSTRAINT `t_user_ibfk_1` FOREIGN KEY (`groupid`) REFERENCES `t_group` (`...
外键约束的删除/更新行为 alter table 表名 add constraint 外键名称 references 主表名(主表字段名) on update cascade on delete cascade 代码语言:javascript 复制 --添加外键约束并指定外键的删除和更新行为 alter table emp add constraint fk_emp_dept_id foreignkey(dept_id)referencesdept(id)on update casca...
(2)策略二:级联操作 on update on delete (3)级联置空 set null (一)外键约束 外键:是指表中某个字段的值依赖于另一个表中的某个字段的值(被依赖的字段必须要有主键约束或者唯一约束) 外键约束:用户实现数据库表的参照完整性。外键约束可以使两张表紧密结合起来,特别是对于删除/修改级联操作时,会保证数据的...
On Update和On Delete是SQL语言的一个标准,用于数据库外键定义,设置当主键表中的被参考列的数据发生变化时,外键表中响应字段的变换规则。 On Update表示主键表中被参考字段的值被更新时,On Delete表示主键表中被参考字段的值被删除时。 语法: foreign key (foreign_key_id) references table(primary_key_id) on...
On Delete和On Update都有Restrict,No Action, Cascade,Set Null属性。现在分别对他们的属性含义做个解释。 ON DELETE restrict(约束):当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除。 no action:意思同restrict.即如果存在从数据,不允许删除主数据。
RESTRICT(默认):如果尝试更新具有相关外键的记录的主键或唯一键,MySQL将拒绝更新操作,并抛出一个错误。 CASCADE:如果更新具有相关外键的记录的主键或唯一键,MySQL将自动更新相关的外键值。 可以在定义外键时使用ON UPDATE子句来指定更新操作选项。例如,以下语句将在创建外键时使用CASCADE选项: ...
针对具有表关系的SQL建议先写普通字段 最后再考虑外键字段 三:多对一(外键)实战 1.创建表(书籍关联表)create table book(id int primary key auto_increment, title varchar(32), price int, pub_id int, foreign key(pub_id) references publish(id));foreign key(关联表) references publish...