VALUES ( @ghsname, @czyname) select SCOPE_IDENTITY( ) AS djh return GO A操作完成后带回产生的djh,然后djh对应多条数据调用B存储过程插入另一个表 这两个存储过程都是一起执行的,但如果B存储过程操作失败的话,A已经完成。 现在我想把这两个存储过程放到一个事务里,如果哪条执行失败,自动回滚到事务执行之前的状态 难在这两个存储过程必须分开执行(因为在前台是A对应多条B,执行完A并返回djh之后,才能用djh加上许多新的参数才能循环执行n次B)。 SET XACT_ABORT on begin tran rk A B commit tran rk 这样做行不行(A和B必须分开调用),如果正执行这个事务时突然断电,还能回滚到开始的状态吗? 在找的资料上看到事务有并发问题:1.丢失和覆盖更新;2.脏读;3.不可重复读;4.幻像读; 不明白是什么意思(资料上就说有这四个问题,没有继续说明。我的书上更别提了,连事务的这两个字都不知道,还是清华出版社的),我这个事务并发执行存在这样的问题吗? 最关键的是我现在根本不知道事务到底该写在SQL server 2000的什么地方?不会是在查询分析器里吧!!!
------解决方案-------------------- sql server 默认的事物级别好像是read committed,这个级别已经可以防止修改丢失和读脏数据了。 个人觉得这个够你用了。
------解决方案--------------------
------解决方案--------------------
你眼神不对呢 结尾少了commit tran 需要再加那个? if(@j>0) begin rollback end else begin commit end ……