怎樣寫sql語句可以加上行級排它鎖?
看你需要加哪種類型的鎖: HOLDLOCK將共享鎖保留到事務完成,而不是在相應的表、行或數(shù)據(jù)頁不再需要時就立即釋放鎖。HOLDLOCK等同于SERIALIZABLE。 NOLOCK不要發(fā)出共享鎖,并且不要提供排它鎖。當此選項生效時,可能會讀取未提交的事務或一組在讀取中間回滾的頁面。有可能發(fā)生臟讀。僅應用于SELECT語句。 PAGLOCK在通常使用單個表鎖的地方采用頁鎖。 READCOMMITTED用與運行在提交讀隔離級別的事務相同的鎖語義執(zhí)行掃描。默認情況下,SQLServer2000在此隔離級別上操作。 READPAST跳過鎖定行。此選項導致事務跳過由其它事務鎖定的行(這些行平常會顯示在結果集內(nèi)),而不是阻塞該事務,使其等待其它事務釋放在這些行上的鎖。READPAST鎖提示僅適用于運行在提交讀隔離級別的事務,并且只在行級鎖之后讀取。僅適用于SELECT語句。 READUNCOMMITTED等同于NOLOCK。 REPEATABLEREAD用與運行在可重復讀隔離級別的事務相同的鎖語義執(zhí)行掃描。 ROWLOCK使用行級鎖,而不使用粒度更粗的頁級鎖和表級鎖。 SERIALIZABLE用與運行在可串行讀隔離級別的事務相同的鎖語義執(zhí)行掃描。等同于HOLDLOCK。 TABLOCK使用表鎖代替粒度更細的行級鎖或頁級鎖。在語句結束前,SQLServer一直持有該鎖。但是,如果同時指定HOLDLOCK,那么在事務結束之前,鎖將被一直持有。 TABLOCKX使用表的排它鎖。該鎖可以防止其它事務讀取或更新表,并在語句或事務結束前一直持有。 UPDLOCK讀取表時使用更新鎖,而不使用共享鎖,并將鎖一直保留到語句或事務的結束。UPDLOCK的優(yōu)點是允許您讀取數(shù)據(jù)(不阻塞其它事務)并在以后更新數(shù)據(jù),同時確保自從上次讀取數(shù)據(jù)后數(shù)據(jù)沒有被更改。 XLOCK使用排它鎖并一直保持到由語句處理的所有數(shù)據(jù)上的事務結束時。可以使用PAGLOCK或TABLOCK指定該鎖,這種情況下排它鎖適用于適當級別的粒度。