排它琐事务
< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd>
如果想将共享锁持续到事务结束,可以使用下面的语句:
SELECT * FROM AA holdlock where BB =1
GO
如果是行锁定,可以参考下面的语句:
SELECT * FROM AA ROWLOCK WHERE BB = 1
GO
如果想在自己读取之前,禁止其它事务来读取,可以在一个事务中先使用UPDATE AA SET BB=BB WHERE 1=0 这样的SQL事句来加排它锁。这样就可以保证自身事务读取的唯一性,要注意提交或回滚自身事务。
PS:在一个事务中,你可以用UPDATE语句先设置一个排它锁。然后再SELECT,最后一定不要忘记提交或才回滚。因为当发生SELECT时,产生的是共享锁。读取完毕后,自动释放锁。当UPDATE经过锁等待,得到的锁是排它锁。此刻在本事务中再进行SELECT,这样就可以确保读取的唯一性(这个AA表是需要实时更新的吧?)。
SELECT * FROM AA holdlock where BB =1
GO
如果是行锁定,可以参考下面的语句:
SELECT * FROM AA ROWLOCK WHERE BB = 1
GO
如果想在自己读取之前,禁止其它事务来读取,可以在一个事务中先使用UPDATE AA SET BB=BB WHERE 1=0 这样的SQL事句来加排它锁。这样就可以保证自身事务读取的唯一性,要注意提交或回滚自身事务。
PS:在一个事务中,你可以用UPDATE语句先设置一个排它锁。然后再SELECT,最后一定不要忘记提交或才回滚。因为当发生SELECT时,产生的是共享锁。读取完毕后,自动释放锁。当UPDATE经过锁等待,得到的锁是排它锁。此刻在本事务中再进行SELECT,这样就可以确保读取的唯一性(这个AA表是需要实时更新的吧?)。