PostgreSQL_ロック

行の更新
UPDATEの場合は行をロックする。

begin;--//トランザクション開始
select * from meibo where id=1 for update;--//行をロック
commit;

テーブルロック
新しく行を登録する場合はテーブルをロックする
LOCK TABLE テーブル名 [IN ロックモード MODE];
今回のモードは「access exclusive」 アクセス イクスクルーシィヴ

自動インクリメント(SERIAL)を使用しない理由はロールバックすると自動インクリメントで割り当てられた数字は元に戻らない。
よって欠番が発生する。
そのためidの最大値に1を足したものを挿入している。
欠番を発生させていけない場合はテーブルロックをして処理する必要あり

begin;--//トランザクション開始
lock table meibo2 in access exclusive mode;--//テーブルをロック
insert into meibo2 select max(id)+1, '鈴木貴子' from meibo2;--//idの最大値に1を足したものを挿入する
commit;
Author: gaa

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です