SQLサーバー行ロックの実装方法
SQL Serverでは行ロックは以下の方法で実装されます:
- 選択する
- 更新する
- (ROWLOCK)指定付きで
BEGIN TRANSACTION
SELECT * FROM table WITH (ROWLOCK) WHERE column = value
-- 或者
UPDATE table SET column = value WHERE column = value WITH (ROWLOCK)
COMMIT TRANSACTION
- ロケ地
- ロック画面
SELECT * FROM table WITH (UPDLOCK) WHERE column = value
-- 或者
SELECT * FROM table WITH (XLOCK) WHERE column = value
- sp_getapplock ネイティブに言い換えると
- sp_getapplock
EXEC sp_getapplock @Resource = 'lock_resource', @LockMode = 'Exclusive'
SELECT * FROM table WHERE column = value
EXEC sp_releaseapplock @Resource = 'lock_resource'
なお、行ロックはトランザクションレベルで有効であり、同じトランザクションでの処理のみが行ロックの影響を受けます。また、行ロックの粒度は、SQL Server のバージョン、テーブル設計、クエリ文の複雑さによって異なることがあります。