Mysql学习笔记(八)由触发器回顾外键约束中的级联选项

时间:2021-06-12 05:03:32

近些天都没有写博客。在学习mysql的知识,通过学习和练习,也熟悉了mysql的函数、触发器、视图和存储过程。并且在实际的开发过程中也应用了一小部分。效果还是十分理想的。

今天晚上在学习触发器模仿innodb的级联选项的时候,回顾到了前面的外键约束方面的知识。这一块,当时有学,但是没有练习多少,一些不会的知识点也没有理解。现在重新回过头来看看什么事外键的级联选项。

这个在实际的应用过程中作用还是比较大的。

比如产品的分类,删除大分类后,小分类自动删除。删除该商品后,该商品与之有关的信息要全部自动删除。

constraint 约束名 foreign key 表A(字段名) references  表B(字段名) [on delete 级联选项] [on update 级联选项];

级联选项有4种取值,其意义如下:

1、cascade   : 瀑布串联的意思。父表记录delete或者update操作,会自动删除或修改子表中与之对应的记录。

2、no action : 父表记录delete 或者update操作,如果子表存在与之对应的记录,那么删除或者修改操作将失败。

3、set null   :  父表记录delete 或者update操作,如果子表存在与之对应的记录,那么子表中对应的记录值将会设置为null。

4、restrict   :  限制约束的意思。与no action 的功能相同。且为级联选项的默认值。

除了主键约束外,外键约束也可以是使用constraint 约束名 约束条件来进行。