sja*_*der 4 sql-server locking
我需要能够在做一些工作时锁定 SQL Server 中的表。锁需要阻止其他会话读取该表。工作完成后,需要解锁桌子。
在 MySQL 中,我使用以下方法完成了此操作:
LOCK TABLES [table] WRITE
Run Code Online (Sandbox Code Playgroud)
此时,其他会话在尝试从表中读取数据时将被阻止,直到表被解锁。
UNLOCK TABLES
Run Code Online (Sandbox Code Playgroud)
现在封锁将停止。
这在 SQL Server 中可能吗?
BEGIN TRANSACTION
SELECT TOP 1 1 FROM TableName WITH (TABLOCKX)
/* do your stuff here */
COMMIT TRANSACTION
Run Code Online (Sandbox Code Playgroud)
TABLOCKX将获得表上的排他锁,并且在您自己提交事务之前,其他用户将无法读取或更新数据。
编辑
与其SELECT *像我之前建议的那样做,只需做 aSELECT TOP 1 1它将获得表上的排他锁,并且不会像 a 那样浪费任何时间返回实际数据SELECT *。
| 归档时间: |
|
| 查看次数: |
2903 次 |
| 最近记录: |