MySQL外键约束

InnoDB类型表有一个其他存储引擎不支持的特性——外键约束。

当B表的外键关联到A表的主键时(表B是父表A表的子表),如果删除了A表,那么B中的外键则仍然关联着一个不存在的表的主键。而外键约束则设定了当约束被破坏时应该应用的的规则,包括防止约束破坏。


创建一个外键约束的语法是:

FOREIGN KEY(item_name)REFERENCES table (column)

table(column)子句是约束该外键的父表列的引用,该语句只是标识了关系,并没有说明约束被破坏时如何操作。


语句后面附上内容来决定触发什么动作:

ON DELETE action

ON UPDATE action

其中action总共有5个动作可选

(1)RESTRICT:不指定任何动作

(2)NO ACTION:不指定任何动作

(3)SET DEFAULT:

(4)CASCADE:最有用的选项。删除父记录将导致那个以父ID作为外键的子记录也被删除

(5)SET NULL:删除父记录将导致子表中相应的外键被设置为NULL,如果该表的列定义为NOT NULL(大部分情况是这样),删除父记录将引发一个错误

注意

由于只有InnoDB表类型的表支持外键约束,所以相关联的两个表都必须是InnoDB类型。

此外,为了MySQL能够比较外键和主键的值,相关的列必须是相同类型的。比如:数字列的大小必须相同;文本列的字符集和校对规则必须相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值