日期:2014-05-18  浏览次数:20370 次

关于多用户同时执行同一个存储过程的事务问题
sqlserver2000数据库,有一个存储过程有下面语句:
    BEGIN   TRAN   aaa
        insert   t_wh_billofdocument([bs_customer_id],[bs_personnel_id])
        values     (@bs_customer_id,@bs_personnel_id   )

        set   @iError   =   @@error
        if   @iError=0
              commite   tran   aaa
        else
              rollback   tran   aaa


假如有多个用户同时执行这个存储过程的语句时,特别是执行insert   语句时,这个事务的作用会不会先执行完某一个用户提交的事务(包括insert   语句)后,再执行另外一个用户提交的事务?

------解决方案--------------------
对的
------解决方案--------------------
事务的执行是会执行完一个再执行下一个的,每个事务是单独的进程,不会出现并发。

所以,你说的是对的。
------解决方案--------------------
嗯。发生事务时是会先加锁所执行的语句,执行完后再解除加锁,接着执行其它的statement