Stories

Detail Return Return

MySQL,SqlServer,PostgreSQL中,如何實現鎖定一張表 - Stories Detail

最近有個需要求,需要在SqlServer中鎖定一張表後,然後搞一些事情,完成後解鎖。
如何鎖定一張表,在MySQL和PostgreSQL中都比較好處理。有專用的語法來實現,在SqlServer中並沒有對於“直接鎖定一張表的語法”,如何來處理? 變通一下也比較簡單,甚至比MySQL和postgresql都更簡單。

1,如何在MySQL中鎖定一張表

MySQL語法:lock tables t2 write;unlock tables;,解鎖之前其他session無法獲取到對應的寫鎖,unlocks table之後釋放鎖

image

 

2,如何在PostgreSQL中鎖定一張表

PostgreSQL語法如下,解鎖之前其他session無法獲取到對應的讀或者寫鎖,unlocks table之後釋放鎖
begin;
lock table t2 in access exclusive mode;
commit;

image

 

3,如何在SqlServer中鎖定一張表

SqlServer中並沒有類似於MySQL或者postgresql中直接鎖定一張表的語法,但是可以通過變通的方式來實現,通過一個簡單的select top 1查詢語句,對錶加上排他屬性的xlock,以及範圍屬性的tablock,即可鎖表。

image

如上表被鎖定後,被解鎖之前,其他任何session的對標的操作都會被阻塞

image

 

Add a new Comments

Some HTML is okay.