|
|
1
6
after意味着它只是在事件发生后触发,仍然可以回滚 例子
做一个插入
现在删除数据
这是触发器的输出 我开枪了 消息3609,级别16,状态1,行1 事务在触发器中结束。批处理已中止。 现在检查表,确认没有删除任何内容
触发器按批触发/语句而不是按行触发,是否可能触发器不是为多行操作编码的,并且自动工具删除了批中的多行?看一看 Best Practice: Coding SQL Server triggers for multi-row operations 下面是一个不执行显式回滚而使触发器失败的示例
插入一些行
运行此
我开枪了 消息512,级别16,状态1,过程trdelete,第6行 子查询返回的值超过1个。当子查询跟随=,,时不允许这样做!=,<,<=,>,>=或当子查询用作表达式时。 声明已终止。 检查桌子
未删除任何内容 |
|
2
1
after delete触发器中的错误将回滚事务。这是在删除它们之后,但在提交更改之前。您使用CLR触发器有什么特殊原因吗?看起来,纯sql触发器应该能够以一种可能更轻量级的方式执行。 |
|
|
3
1
好吧,你不应该做一个select-in触发器(谁会看到结果),如果你所做的只是一个insert,那么它也不应该是一个clr触发器。clr通常不是触发器中的好东西,除非您需要做一些t-sql无法处理的事情,否则最好在触发器中使用t-sql代码。 是否已还原到源代码管理中的最新版本?如果问题已经被破坏了,也许这会解决问题。 |
|
|
Johnny T · 基于当前值的SQL合并表[重复] 1 年前 |
|
John D · 需要为NULL或NOT NULL的WHERE子句 1 年前 |
|
ojek · 如何对SQL结果进行分组和编号? 1 年前 |
|
|
senek · 如何在PL/SQL中将选择结果(列)放入数组中 1 年前 |
|
|
Sax · 规范化Google表格(第一步) 1 年前 |
|
|
Jatin · 检索卷计数的动态sql抛出错误语法错误[关闭] 1 年前 |
|
|
Andrus · 如何在sql中查找第二个匹配项 1 年前 |