MySQL约束constraint

这是一个陷阱。
不要相信自动增加主键会减轻数据库的负担。

实用提醒:使用复合主键时,请适当规划主键并考虑您的业务需求。

如何在MySQL中实现外键约束?外键的创建与管理完整教程!

尝试了最后七个 MySQL 外键约束。
2 02 3 年 8 月 1 0 日 我的朋友创建了一个父表。
这是主键。
名称是 varchar(1 00)。

他为你制作了一张婴儿桌。
这是主键。
Parent_id 是 int。
描述是 varchar (2 5 5 )。
他直接用TABLE写的 结构 fk_parent_id 外键(parent_id)在更新级联上删除级联时引用parent_table(id)。

挂起比级联更重要。
因此,如果父表被删除,子表也会被删除。
更新父表号id。
子表parent_id也发生了变化。

后来我发现还是DELETE RESTRICT比较好。
因为那天他试图毁掉他父亲的手表。
这是因为孩子们告诉了信息表。
错误报告直接阻止删除。

我建议在创建表的时候直接写外键。
ALTER INDEX 添加外键有点麻烦。
还要检查数据类型匹配。
而那天她就陷入了陷阱。
INT 和 INT UNSIGNED 不能混合使用。

需要索引。
忘了提及parent_table。
导致child_table的查找速度非常慢。
最后,我添加了一个要付款的清单。

外键总是一件好事。
虽然会慢一些。
但法律的某些信息。
别像我的朋友那样。
他现在写代码的时候很担心。

mysql constraint用法

坦白讲,MySQL的局限性在于它对数据进行锁定,以保证表中的数据不被篡改。
但如果用不好的话,性能就会直接崩溃。

我先说最重要的事情。
外键约束是表之间的“父子关系”。
去年我们运行一个电子商务项目时,使用 ON DELETE CASCADE 删除了订单表。
结果,该客户被删除,与其关联的所有订单都丢失了。
说实话,当时非常尴尬。
还有一点是,验证(verification)约束是为列设置的“红绿灯”。
比如商品表的价格必须大于0,直接阻塞在数据库中,不等待应用层验证。
还有另一个重要的细节。
虽然唯一索引可以防止重复,但不要忘记NOT NULL,否则NULL就会利用该漏洞。

一开始我也以为主键就是唯一标识符,后来发现错了。
复合主键(如订单表中的订单号+产品号)是处理相关数据的有力工具。
等等,还有别的事。
高并发写入时,外键约束会导致父表写入后,子表在同步完成之前停止。
这在术语上称为雪崩效应。
事实上,前部的轻微延迟会降低整个后部的性能。

提醒:在修改限制之前,请记住使用 SET FOREIGN_KEY_CHECKS=0 关闭外键检查。
否则删除表并不能解除约束,插入数据时应用层会直接崩溃。
设计时不要一刀切。
例如,如果用户昵称经常更改,则不要添加唯一限制。