SQLサーバー行ロックの実装方法

SQL Serverでは行ロックは以下の方法で実装されます:

  1. 選択する
  2. 更新する
  3. (ROWLOCK)指定付きで
BEGIN TRANSACTION
SELECT * FROM table WITH (ROWLOCK) WHERE column = value
-- 或者
UPDATE table SET column = value WHERE column = value WITH (ROWLOCK)
COMMIT TRANSACTION
  1. ロケ地
  2. ロック画面
SELECT * FROM table WITH (UPDLOCK) WHERE column = value
-- 或者
SELECT * FROM table WITH (XLOCK) WHERE column = value
  1. sp_getapplock ネイティブに言い換えると
  2. sp_getapplock
EXEC sp_getapplock @Resource = 'lock_resource', @LockMode = 'Exclusive'
SELECT * FROM table WHERE column = value
EXEC sp_releaseapplock @Resource = 'lock_resource'

なお、行ロックはトランザクションレベルで有効であり、同じトランザクションでの処理のみが行ロックの影響を受けます。また、行ロックの粒度は、SQL Server のバージョン、テーブル設計、クエリ文の複雑さによって異なることがあります。

bannerAds