読み方 : セットトランザクションぶん

SET TRANSACTION文【SET TRANSACTION statement】

概要

SET TRANSACTION文とは、データベースのトランザクション処理で、現在のトランザクションの動作条件を設定するSQL文。分離レベルや読み取り専用か読み書き両用かといったアクセスモードを指定するために用いる。データ処理を開始する前、または直後に実行し、他の処理との整合性を保つルールを定める。
SET TRANSACTION文のイメージ画像

トランザクション処理とは、データベースへの一連の処理を一体不可分の一つのまとまりとして扱う仕組みである。複数の更新や照会をまとめて扱うことで、処理の途中で他の処理がデータを変更し、矛盾が生じる事態を防ぐ。SQLでは、処理が成功すればCOMMIT文で確定し、問題が生じればROLLBACK文で元に戻す。

「分離レベル」とは、複数のトランザクションが同時にデータベースへアクセスする際、互いにどの範囲まで影響を及ぼし合うかを定める基準である。標準SQLでは「READ UNCOMMITTED」や「READ COMMITTED」「REPEATABLE READ」「SERIALIZABLE」という段階が定義されており、レベルが厳格になるほど他のトランザクションからの干渉は少なくなる一方、処理の並行性は下がる。SET TRANSACTION文でこの基準をトランザクションごとに選べる。

SET TRANSACTION文ではアクセスモードの設定も可能である。「READ ONLY」を指定すると、そのトランザクション内ではデータの参照のみが許され、更新や削除は行えなくなる。一方、「READ WRITE」を指定すれば参照と更新の両方が可能になる。読み取り専用に設定することで、意図しないデータの変更を防ぎつつ、処理の負荷を抑える運用が可能になる。

分離レベルやアクセスモードへの対応状況は、データベース管理システム(DBMS)によって異なる。例えば、MySQLでは分離レベルの既定値が「REPEATABLE READ」であり、PostgreSQLでは通常「READ COMMITTED」が用いられる。MySQLのSET TRANSACTION文には「GLOBAL」や「SESSION」を付けて既定値を変更する機能もあるが、PostgreSQLでは現在のトランザクションのみに設定が適用され、その後のトランザクションには影響しない。

SET TRANSACTION文を用いる際には、原則としてトランザクション処理の先頭で設定を行う必要がある。多くの製品では、データの参照や更新を行う文がすでに実行された後は、分離レベルなどの設定を変更できないためである。必要な条件はトランザクションの処理が始まる前にあらかじめ指定しておく必要がある。

(2026.9.17更新)
 
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。