大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说mysql建立外键关联_如何设置外键,希望您对编程的造诣更进一步.
eg.一个用户可有拥有多个订单,一个订单只能属于一个用户,一对多,在tb_order中使用外键user_id关联tb_user的id。
当删除、更新tb_user中的主键时,与之关联的tb_order要受到影响,比如
#tb_user中的一条记录 1 chy abcd #tb_order中一条记录,10是tb_order的id,1是所属user的id 10 ...... 1
代码100分
删除tb_user中id=1这条记录,或者更新id字段的值,mysql会如何处理tb_order中与之关联的记录?
设计外键时,mysql提供了4种外键关联策略
1、RESTRICT 限制(默认策略)
要删除tb_user中的记录,或者更新主键字段的值,如果tb_order中有记录与之关联,则不能删除、更新(执行操作时会报错)
2、CASCADE 级联
删除tb_user中的记录时,会自动删除tb_order中与之关联的记录;
修改tb_user中id字段的值时,会自动修改tb_order中与之关联的记录的外键字段的值(同步变化)。
3、NO ACTION 什么也不做
删除tb_user中的记录,或者修改id字段的值,但tb_order中有记录与之关联,可以删除、更新,tb_order中与之关联的记录不作任何处理(数据不发生变化)。
此种策略需要存储引擎支持,如果存储引擎不支持,会自动换为RESTRICT。
4、SET NULL 置为NULL
删除tb_user的记录,或更新主键字段的值,会自动将tb_order中与之关联的记录的外键字段的值置为NULL。
这种方式有一个要求:设计tb_order时,外键user_id不能使用NOT NULL约束。
CASCADE用得最多,其次是RESTRICT,未设置外键关联策略时默认为RESTRICT(为了数据安全)。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/9268.html