当前位置:   article > 正文

MySQL中外键的几种操作_“foreign key (a) references r(a) on delete no acti

“foreign key (a) references r(a) on delete no action”,

添加外键
    create table 表名(
        字段名 数据类型
        [constrant] [外键名称] foreing(外键字段名) references 主表(主表列名)
);
alter table 表名 add constraint 外键名称 foreign key(外键字段名)references 主表(主表列名);

删除/更新行为
     no action  当在父表中删除/更行对应记录时,首先检查该记录是否右对应外键,如果有抓为不允许从删除/更新。(与restrict 一致)
     restrict   当在父表中删除/更行对应记录时,首先检查该记录是否右对应外键,如果有抓为不允许从删除/更新。(与no action 一致)

     cascade    当在父表中删除/更行对应记录时,首先检查该记录是否右对应外键,如果有,则也删除/更新外键在子表中的记录。
     alter 表名 add constraint 外键名称 foreign key(外键字段) references 主表名(主表字段名) on update cascade on delete cascade;

     set null   当在父表中删除对应记录时,首先检查记录是否有对用外键,如果有则设置子表中该外键值为null(这就要求该外键允许去null).
     alter 表名 add constraint 外键名称 foreign key(外键字段) references 主表名(主表字段名) on update set null on delete set null;

     set default    父表有变更时,子表将外键列设置成一个默认的值(innodb不支持)
演示如下

  1. -- 添加外键
  2. alter table emp
  3. add constraint fk_emp_dept_id foreign key (dept_id) references dept (id);
  4. -- 删除外键
  5. alter table emp
  6. drop constraint fk_emp_dept_id;
  7. -- 外键的删除和更新行为 cascade
  8. alter table emp
  9. add constraint fk_emp_dept_id foreign key (dept_id) references dept (id) on update cascade on delete cascade;
  10. -- set null
  11. alter table emp
  12. add constraint fk_emp_dept_id foreign key (dept_id) references dept (id) on update set null on delete set null;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/522232
推荐阅读
  

闽ICP备14008679号