日期:2014-05-17  浏览次数:20654 次

sqlserver2000中触发器的异常
我在表A上建了个after insert的触发器,往表B里面插入数据;

如果插入表B数据异常,会导致也不能往表A里面插入数据;

这个可以怎么在触发器里面处理异常,使往表B插入数据异常时自动退出触发器?

平时很少使用sqlserver2000,只会Oracle,往指教。

表A是生产用的表,所以一定要处理好异常。
sqlserver2000?触发器?异常

------解决方案--------------------
可以结合触发器和事务,保证数据的统一性。

参考:
http://www.sdau.edu.cn/support/aspjc/part12/12-3-4.cfm.htm
------解决方案--------------------
引用:
可以结合触发器和事务,保证数据的统一性。

参考:
http://www.sdau.edu.cn/support/aspjc/part12/12-3-4.cfm.htm

真的可以,亲测了。

use test
create table t1(id int,val varchar(10))
create table t2(id int,val varchar(10),check(id>10))
go
create trigger tr_test on t1
after insert
as begin
insert into t2
select id,val from inserted
if @@error>0
rollback tran
end
go
insert into t1 values(1,'tgq')
go
select * from t1
select * from t2
drop table t1
drop table t2

------解决方案--------------------
....
........
insert into B表 
select id,val from inserted 
if @@error>0 
rollback tran 
return
............