OMG*_*ies 5 trigger sql-server-2005 sql-server transaction
我们最近进行了更改,以根据以前在存储过程中使用的逻辑创建约束,其中一部分包括使用INSTEAD OF触发器来集中逻辑。
逻辑通常很简单:
问题是当触发器中的语句中遇到类似 CHECK 约束的东西时。事务被转储,一切都被回滚。我正在考虑必须在有问题的存储过程中复制 CHECK/etc 约束以在触发器执行之前进行验证——还有其他选择吗?
可能不会。违反声明性约束总是会引发错误并阻止事务提交违反约束的写入。数据库约束(检查、外键、唯一性等)的要点是,它们通过中止违反约束的写入来防止无效数据记录在数据库中。违反约束会引发错误并回滚事务。
如果您希望事务正常失败,您必须处理异常或在尝试写入数据之前预先验证数据。在后一种情况下,您将必须替换存储过程中的验证或在应用程序中实现验证。
| 归档时间: |
|
| 查看次数: |
439 次 |
| 最近记录: |