sql2005的update触发器中,回滚后老是报错

我在sqlserver2005中写了个update触发器,当检查约束不合法时,我rollback,这时执行update操作的结果是对的,但是他会报一个异常:

消息 3609,级别 16,状态 1,第 1 行
事务在触发器中结束。批处理已中止。

这个异常能否让他消掉?如果能如何做?
谢谢高手了

第1个回答  2007-10-26
在触发器中无需提交获回滚,它应该属于调用它的事务,它的提交或回滚会导致这个事务的提交或回滚.当检查到约束不合法时不应该回滚,而应该抛出异常(sqlserver中好象用RAISERROR),异常会导致主事务回滚。本回答被提问者采纳
第2个回答  2021-05-30

分享电脑常用小技巧,电脑知识,电脑技巧,电脑常见问题解决方法等,今天分享的是,4步方法解决Windows Update无法更新或更新报错,感谢粉丝们一直以来的支持

第3个回答  2019-01-22
create trigger 更新工资
on 教师表
for update
as
begin
if update(工资)
begin
insert into 变化表 (a.教师,新工资,旧工资)
select 教师,a.工资,b.工资
from inserted a,deleted b
where a.教师 = b.教师
end
end

sql2005的update触发器中,回滚后老是报错
在触发器中无需提交获回滚,它应该属于调用它的事务,它的提交或回滚会导致这个事务的提交或回滚.当检查到约束不合法时不应该回滚,而应该抛出异常(sqlserver中好象用RAISERROR),异常会导致主事务回滚。

用T-SQL设计一个插入触发器,在触发器中设定条件,当没有满足该条件后,回...
如果你插入的数据不符合业务规则 ,这个时候就要回滚你的插入操作,业务规则在触发器中定义,也就是一个判断语句,回滚操作用ROLLBACK TRANSACTION 语句就可以,同时可以定义错误提示信息,下面这个列子你可以看看:CREATE TRIGGER employee_insupd ON employee FOR INSERT, UPDATE AS DECLARE @min_lvl tinyint,max...

触发器 回滚问题
update fenjianbiao set yudingshu=yudingshu+@fenshu where fenjianbiao.kanhao=@kanhao and fenjianbiao.kehuhao=@kehuhao and fenjianbiao.qishu=@qishu and fenjianbiao.niandu=@niandu end end ---补充--- 我问下楼主,'这个触发器当2个update失败的时候要求回滚全部操作,就是insert操作也...

MSSQL 的update使用问题
这是触发器中的语句,应该是if updated(字段名)意思是如果(字段名)这个字段被更新了,则执行以下语句 确实是我写错了,补充:UPDATE触发器的工作过程 可将UPDATE语句看成两步操作:即捕获数据前像(before image)的DELETE语句,和捕获数据后像(after image)的INSERT语句。当在定义有触发器的表上执行UPDAT...

SQL表中建立触发器后,此表无法插入数据了
回答:你的触发器是完成什么功能的?

sqlserver 触发器的运行是在update等处理的前还是后
触发器执行顺序根据 before 和 after 关键字决定。使用before 关键字:触发器的执行是在数据的插入.更新或删除之前执行的。使用after关键字:触发器的执行是在数据的插入.更新或删除之后执行的。

SQL2005的触发器怎么使用?
例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。比较触发器与约束...

SQL中反向update回去是什么意思?
利用事务即可。事务的概念理解吗?事务具有原子性。所以把一段批处理作为一个事务执行,然后可以选择回滚或者完成。“update回去”这个概念没见过,可能是部分人的习惯称谓吧。关于事务,你可以去看看教材里,关于“事务”的章节。由于时间关系,抱歉不能举例。 最近比较忙。

SQL insert触发器问题
1 是不用触发器,自己在插入数据之前手动进行检测,如果存在,则不在插入 2 把for insert改成 instead of insert sql中的前置触发器是instead of,这种触发器在数据更新前发生 但要注意,在检查数据通过后,要在该触发器中重发更新语句,否则不会发生更新动作.就是说 if exists(select * from ...

SQL语句建立触发器中语句出错了,哪位帮我修改阿?谢谢
INSTEAD OF 触发器不能在 WITH CHECK OPTION 的可更新视图上定义。如果向指定了 WITH CHECK OPTION 选项的可更新视图添加 INSTEAD OF 触发器,SQL Server 将产生一个错误。用户必须用 ALTER VIEW 删除该选项后才能定义 INSTEAD OF 触发器。{ [DELETE] [,] [INSERT] [,] [UPDATE] }是指定在表或视图上执行...

相似回答