Table "item2.item" で、ACCESS EXCLUSIVE

testdb=# \d item
                       Table "item2.item"
 Column |         Type         | Collation | Nullable | Default 
--------+----------------------+-----------+----------+---------
 id     | character varying(4) |           |          | 
 name   | text                 |           |          | 
 price  | integer              |           |          | 
クライアントA

testdb=# BEGIN;
BEGIN
testdb=# LOCK TABLE item IN ACCESS EXCLUSIVE MODE;
LOCK TABLE
testdb=# SELECT * FROM item WHERE price > 1000;
  id  |     name     | price 
------+--------------+-------
 S001 | ボールペン   |  1500
 S004 | カーボン用紙 |  1200
(2 rows)
クライアントB

testdb=# DELETE FROM item WHERE id = 'S001';

ロック取得待ち
クライアントA

testdb=# COMMIT;
COMMIT
クライアントB

DELETE 1
testdb=# SELECT * FROM item;
  id  |     name     | price 
------+--------------+-------
 S002 | カッター     |   200
 S003 | のり         |    80
 S004 | カーボン用紙 |  1200
 S005 | 修正テープ   |   530
(4 rows)

ロックが取得でき処理が完了


いいなと思ったら応援しよう!