目次
ふりかえり

筆者
本記事は、SQLの基本、実務使用例編になります。
SQLの基礎に関しましては、
【初学者必見!】SQLの超基礎編の記事をご覧くださいませ。

A子
本編に入ります!
SELECT FOR UPDATEとは?
- 「この行をロックするから、他の人は更新・削除できないようにして!」という命令です。
- トランザクション中に誰かが同じ行を変更してしまうのを防ぐために使います。
- 一般的には、更新や削除の前に使用します。
いつ使う?
- 在庫を予約する
- 銀行口座の残高を変更する
- 他の人が同じデータを同時に処理しないようにしたいとき
実務レベルの使用例を見ていこう!

筆者
実際に、SQLを使用してデータを確認していきましょう。
SQLに関しては以下を使用して解説していきます。
create table文、select文、insert文、update文、delete文、
drop table文、につきましては、過去にアップロードした
【初学者必見!】SQLの超基礎編の記事をご覧くださいませ。

A子
目次の、「ふりかえり」のところにそれぞれの記事のリンクが
貼ってあるよ!
または、サイドバーのカテゴリーにSQLがあるから、そちらからでも
参照できます!
Oracle Live SQLで実行していきます!
今回、実行するSQLの一覧
テーブルを作成(CREATE文)
create table items (
item_id number primary key,
item_name varchar2(100),
stock number
);
データを登録(INSERT文)
insert into items values (1, 'りんご', 10);
insert into items values (2, 'みかん', 5);
commit;
SELECT FOR UPDATEの使い方
-- トランザクション開始(OracleではBEGINは不要)
select * from items
where item_id = 1
for update;
-- 上の行がロックされている間、他のユーザーはこの行を更新・削除できません
-- この後、安心して在庫を減らす処理ができます
update items
set stock = stock - 1
where item_id = 1;
commit;
他のユーザーが同じ行を更新しようとすると?
他のセッションで以下のようなSQLを実行しようとすると、ロックが解除(COMMITまたはROLLBACK)されるまで待たされます。
update items
set stock = stock - 1
where item_id = 1;
まとめ
| 内容 | 説明 |
|---|---|
SELECT FOR UPDATE | 行をロックして、他人の更新や削除を防ぐ |
| よくある使い方 | 在庫・口座残高などの更新前に使用 |
| 注意点 | COMMIT や ROLLBACK を忘れると、ロックが解除されず他の人が待たされる |

筆者
SELECT FOR UPDATE編について解説しました。
次回もお楽しみに!










コメント