MySQL,SqlServer,PostgreSQL中,如何实现锁定一张表
最近有个需要求,需要在SqlServer中锁定一张表后,然后搞一些事情,完成后解锁。
如何锁定一张表,在MySQL和PostgreSQL中都比较好处理。有专用的语法来实现,在SqlServer中并没有对于“直接锁定一张表的语法”,如何来处理? 变通一下也比较简单,甚至比MySQL和postgresql都更简单。
1,如何在MySQL中锁定一张表
MySQL语法:lock tables t2 write;unlock tables;,解锁之前其他session无法获取到对应的写锁,unlocks table之后释放锁
2,如何在PostgreSQL中锁定一张表
PostgreSQL语法如下,解锁之前其他session无法获取到对应的读或者写锁,unlocks table之后释放锁
begin;
lock table t2 in access exclusive mode;
commit;
3,如何在SqlServer中锁定一张表
SqlServer中并没有类似于MySQL或者postgresql中直接锁定一张表的语法,但是可以通过变通的方式来实现,通过一个简单的select top 1查询语句,对表加上排他属性的xlock,以及范围属性的tablock,即可锁表。
如上表被锁定后,被解锁之前,其他任何session的对标的操作都会被阻塞