高分求教:一个关于数据库事务的问题 ( 积分: 200 )

  • 主题发起人 主题发起人 hdf001
  • 开始时间 开始时间
H

hdf001

Unregistered / Unconfirmed
GUEST, unregistred user!
我编写了如下事务:<br><br>begin&nbsp;transaction&nbsp;test<br>delete&nbsp;from&nbsp;temp&nbsp;where&nbsp;id='124';<br>insert&nbsp;into&nbsp;temp(id,name)&nbsp;values('123','liwu')&nbsp;(已经存在相同的行,且id为主键)<br>commit&nbsp;transaction&nbsp;test<br><br>设想的结果是因为insert语句回导致主键重复,所以,事务撤销,delete语句也不执行。但是在“SQL语句分析器”中执行,其结果是delete得到了执行,这是什么原因?
 
看明白下面这段代码,应该可以帮你解决问题<br>begin&nbsp;transaction&nbsp;t1<br>begin&nbsp;transaction&nbsp;t2<br>delete&nbsp;from&nbsp;temp&nbsp;where&nbsp;id='124';<br>if&nbsp;@@ERROR&lt;&gt;0<br>&nbsp;&nbsp;commit&nbsp;transaction&nbsp;t2<br>else<br>&nbsp;&nbsp;rollback&nbsp;tran&nbsp;t2<br>insert&nbsp;into&nbsp;temp(id,name)&nbsp;values('123','liwu')&nbsp;(已经存在相同的行,且id为主键)<br>if&nbsp;@@ERROR&lt;&gt;0<br>&nbsp;&nbsp;commit&nbsp;transaction&nbsp;t1<br>else<br>&nbsp;&nbsp;rollback&nbsp;tran&nbsp;t1
 
后退
顶部