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-server – 用于INSERT和UPDATE的SQL Server存储过程,更
- sql-server – SQL Server 2008 R2 – 备份2005 dbs并迁移到
- sql – 获取上一小时的记录
- laravel-5 – laravel 5中数据库连接的问题
- sql – string按功能与其他聚合函数连接
- 一个查看SQL ServerServer数据库空间使用情况的存储过程 Sp
- SQL – 子查询和外表之间的关系
- MySQL Administrator 登录报错的解决方法
- sql – 有没有办法在Oracle 10g中的数据库之间复制BLOB记录
- SQL Server SQL语法 分隔符理解
