
由上,将两个insert命令包装为一个事务,如下:
declare @OK integer
begin transaction
set @OK = 0
while 1 = 1
begin
insert table1 values( ... )
set @OK = @@error
if @OK <>0
Break
insert table2 values (... )
set @OK = @@error
Break
end
if @OK = 0
commit transaction
else
rollback transaction
通过触发器也能实现你的需求,其底层原理依然是事务,触发器和引发它执行的语句被自动地包装到一个事务中。不过,强烈不建议使用该方法,用此伎俩会导致业务逻辑分散,而人的思维还是需要一定的连贯性,集中在一起显然有助于表达和理解,当需要改进或者调试错误时徒增繁琐,实在是弊大于利。
可以啊,建议你用触发器。比如在Table1中:\x0d\x0aCreateTriggerAutoInsert\x0d\x0aForInsert\x0d\x0aAs\x0d\x0ainsertintoTable2values(1,2)\x0d\x0a然后你只要执行:\x0d\x0ainsertintoTable1values(1,2)\x0d\x0a那么自动启用触发机制,自然Table2中也有了。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)