資源の競合が起きた場合に、どのタイミングまで占有待ちとなるのかは、トランザクションモードの指定によって異なります。以下に、トランザクションモードの指定と資源の占有について示します。
DSO定義でPRECEDENCE(1)が指定されたSEQUENTIAL構造の表の競合時の制御については、“1.1.12 PRECEDENCE(1)を指定したSEQUENTIAL構造の特徴と注意事項”を参照してください。
| 先行トランザクション | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
独立性水準 | SERIALIZABLE | READ COMMITTED | READ UNCOMMITTED | ||||||||||||
S | S | I | U | D | S | I | U | D | S | I | U | D | |||
後続トランザクション | 独立性水準 | SQL文 |
|
| |||||||||||
SERIALIZABLE | SELECT |
| ○ | × | × | × | ○ | × | × | × | ○ | × | × | × | |
INSERT | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | |||
UPDATE | × | × | × | × | △ | × | × | × | ○ | × | × | × | |||
DELETE | × | × | × | × | △ | × | × | × | ○ | × | × | × | |||
READ UNCOMMITTED | SELECT | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ||
INSERT | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | |||
UPDATE | × | × | × | × | △ | × | × | × | ○ | × | × | × | |||
DELETE | × | × | × | × | △ | × | × | × | ○ | × | × | × |
○ : 待つことなく動作する
△ : 先行トランザクションのSQL文が以下のいずれかの場合は、先行トランザクションのSQL文の終了を待つ
単一行SELECT文
更新可能性句に、FOR READ ONLYを指定したカーソルのOPEN文
トランザクションアクセスモードが読込み専用モードのときのOPEN文
先行トランザクションのSQL文が上記以外の場合は、トランザクションの終了を待つ
× : トランザクションの終了を待つ
| 先行トランザクション | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
独立性水準 | SERIALIZABLE | READ COMMITTED | READ UNCOMMITTED | ||||||||||||
S | S | I | U | D | S | I | U | D | S | I | U | D | |||
後続トランザクション | 独立性水準 | SQL文の種類 |
|
| |||||||||||
SERIALIZABLE | SELECT |
| ○ | × | × | × | ○ | × | × | × | ○ | × | × | × | |
INSERT | × | × | × | × | △ | × | × | × | ○ | × | × | × | |||
UPDATE | × | × | × | × | △ | × | × | × | ○ | × | × | × | |||
DELETE | × | × | × | × | △ | × | × | × | ○ | × | × | × | |||
READ UNCOMMITTED | SELECT | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ||
INSERT | × | × | × | × | △ | × | × | × | ○ | × | × | × | |||
UPDATE | × | × | × | × | △ | × | × | × | ○ | × | × | × | |||
DELETE | × | × | × | × | △ | × | × | × | ○ | × | × | × |
○ : 待つことなく動作する
△ : 先行トランザクションのSQL文が以下のいずれかの場合は、先行トランザクションのSQL文の終了を待つ
単一行SELECT文
更新可能性句に、FOR READ ONLYを指定したカーソルのOPEN文
トランザクションアクセスモードが読込み専用モードのときのOPEN文
先行トランザクションのSQL文が上記以外の場合は、トランザクションの終了を待つ
× : トランザクションの終了を待つ
先行トランザクションがカーソルのOPEN文を実行した場合は、カーソル宣言の更新可能性句の指定によって占有待ちの制御が異なります。
更新可能性句がREAD ONLYの場合は、SELECT文と同じになります。更新可能性句がFOR UPDATEの場合は、UPDATE文と同じになります。