行の更新
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;