博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对PostgreSQL的UPDATE和DELETE外键属性思考
阅读量:6693 次
发布时间:2019-06-25

本文共 520 字,大约阅读时间需要 1 分钟。

外键创建时默认属性是MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION。这里需要深入思考一下NO ACTION这部分。

首先,该部分参数有三种:

1)NO ACTION - 不允许删除/更新,但是在事务中延迟报错。

2)RESTRICT - 不允许删除/更新,直接报错。

3)CASCADE - 允许级联删除/更新。

在这里,CASCADE最好理解,是级联的意思,如删除父表数据时子表关联数据也存在则会级联删除。

NO ACTION和RESTRICT对于操作都会进行检查,如果不符合约束则会报ERROR并退出,数据不变,唯一的区别是NO ACTION可以设置约束在事务中延迟生效,而RESTRICT不允许。个人理解应该是处于事务性能的考虑,假设在一个大事务中,定义的是RESTRICT,那么执行每一条语句都回去校验,如果整个事务中没有关联删除的错误存在,那必然会导致时间的浪费;但是如果此时使用NO ACTION,事务整个过程都在平滑处理,到最后提交时,如果存在级联约束,那么久报错退出,如果不存在久直接提交整个事务,此时是最省时的。另外事务具有原子性,针对一个事务做此处理也说的过去。

转载地址:http://bnjoo.baihongyu.com/

你可能感兴趣的文章
layer.mobile 弹出框插件(2.0版)
查看>>
C#基础 条件语句、选择语句和循环语句
查看>>
bugzilla安装笔记
查看>>
Hadoop 2.0(YARN/HDFS)学习资料汇总
查看>>
hadoop命令执行hbase应用jar包时的环境变量加载问题
查看>>
XenMobile学习文章总结
查看>>
Android开发者的混淆使用手册
查看>>
Telnet服务及协议
查看>>
SpringMVC深度探险
查看>>
关于vs2010巨慢(cpu占用高)的几种解决方式
查看>>
简单3步,轻松集成Testlink和MantisBT
查看>>
SQL语句教程(04) AND OR
查看>>
Oracle中的JOIN
查看>>
html中iframe控制父页面刷新
查看>>
每天一个linux命令(50):crontab命令
查看>>
linux命令7--cat命令&nl命令
查看>>
.NET底层开发技术
查看>>
RHEL regiester
查看>>
c/c++中的一些基础知识
查看>>
练习:输出整数每一位,计算算数,9出现次数,输出图案,水仙花数
查看>>