专注,勤学,慎思。戒骄戒躁,谦虚谨慎

just do it

导航

MySQL,SqlServer,PostgreSQL中,如何实现锁定一张表

最近有个需要求,需要在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

 

posted on 2025-10-15 15:09  MSSQL123  阅读(6)  评论(0)    收藏  举报