MySQL建立外键(Foreign Key)

本文详细介绍了在数据库中建立外键时应注意的各种方式,包括cascade、setnull、noaction、restrict和setdefault,以及如何通过SQL命令创建外键。同时,文章强调了在已有数据的情况下建立外键时确保数据一致性的重要性,并提醒避免关闭外键约束以防止数据不一致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果在最初建立表的时候就建立外键这样一般不会有什么问题,顺便说一下建立外键的时候,需要注意的地方。

   cascade方式
在父表上update/delete记录时,同步update/delete掉子表的匹配记录 
   set null方式
在父表上update/delete记录时,将子表上匹配记录的列设为null
要注意子表的外键列不能为not null  
   No action方式
如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作  
   Restrict方式
同no action, 都是立即检查外键约束
   Set default方式

父表有变更时,子表将外键列设置成一个默认的值 但Innodb不能识别。

建立外键的命令:

alter table current_table_name add foreign key fk_name(stockid) references table_name(stockid)
current_table_name 为表名, fk_name 为外键名 第一个括号里填写外键列名, table_name为被引用的表的名子,第二个括号里是写被外键关联的列名

当表中有一定的数据的时候,这个时候如果要建立外键(foreign key)要注意数据的一致性,否则会出现错误。

尽量不要使用:

SET FOREIGN_KEY_CHECKS = 0;

关闭了外键约束,此时外键也就失去了意义,可能会导致数据不一致的问题出现,出现僵尸数据。

转载于:https://www.cnblogs.com/feiyafeiblog/p/7120989.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值