SQL标准是否指定约束验证的顺序并触发触发?
我很好奇我是否可以依赖任何特定的验证NOT NULL,FOREIGN KEY,UNIQUE,CHECK约束和BEFORE触发器的顺序.
根据经验,我知道MySQL首先检查NOT NULL,然后启动BEFORE触发器,然后检查UNIQUE约束. Oracle在BEFORE触发器后检查NOT NULL(我相信SQLServer也是如此,但不记得了).标准是否对订单有所说明,或者完全取决于数据库供应商? 解决方法该特定行为似乎是 bug in MySQL,它只影响BEFORE INSERT触发器,而BEFORE UPDATE触发器的行为正确.standard(与问题评论相关联)肯定没有明确说明,但它绝对暗示:
NOT NULL错误应该是INSERT或UPDATE的一部分(即触发事件).标准不应该指定这个.绝对没有必要先对一组不是最终的更改进行约束,因为您的BEFORE触发器既能解决错误又能引入新错误. 总结:这实际上并不取决于数据库供应商,因为始终需要在before触发器之后检查约束. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- sql – 使用SELECT锁定Oracle … FOR UPDATE OF
- sql-server – 将SQL Server Express数据库复制到另一台计算
- 通过SQL Server 2008数据库复制实现数据库同步备份
- sql – 为什么’HASH JOIN’或’LOOP JOIN’改进了这个存储
- Sql Server 2008 – 删除同义词
- SQLSERVER存储过程转换oracle
- SqlServer快速检索某个字段在哪些存储过程中(sql 语句)
- 为什么要引入锁(无论什么数据库软件引入锁的目的都是因数据
- .net – 用LINQ修改’字符串或二进制数据的任何聪明的方式都
- sqlserver 差异备份