ORACLE MASTER Silver SQL 26ai更新・定義・トランザクションの判断オリジナル・公式資料照合難易度★★★★☆
Oracle AI Database 26aiで、p(id PRIMARY KEY)にはCOMMIT済みの10だけがある。空のcは次の定義で作成済みである。自動COMMITはOFF、追加の制約・トリガー・他セッションによる変更はない。同一セッションで、表定義の後に示すINSERT 2文とCOMMITを順に実行した結果はどれか。 表定義(作成済み): CREATE TABLE c ( id NUMBER PRIMARY KEY, p_id NUMBER REFERENCES p(id) DEFERRABLE INITIALLY DEFERRED ); ここから実行: INSERT INTO c VALUES (1,99); INSERT INTO p VALUES (99); COMMIT;
A
すべて成功し、pは2行、cは1行になる★ 正解
COMMIT時点でpの99が存在するため外部キーを満たします。元のpの10も残ります。
B
最初のINSERTが、親99がないため必ず失敗する
それは即時検査の場合です。この外部キーはINITIALLY DEFERREDと明示されています。
C
2つのINSERTは成功するが、COMMITは親の作成順が逆なので失敗する
遅延検査では、親と子を挿入した順番ではなくCOMMIT時点の参照整合性を検査します。
D
COMMIT後は外部キーが無効化され、以後どのp_idも格納できる
DEFERRABLEは検査時期の設定です。制約をDISABLEする指定ではなく、以後も整合性検査は行われます。
解説
この外部キーはINITIALLY DEFERREDなので、参照整合性をトランザクションの終わりに検査します。子のINSERT時点では親99がなくても、その後同じトランザクションで親99を追加してからCOMMITするため整合性を満たします。遅延可能でも制約を無視できるわけではありません。
根拠資料・確認情報
対応範囲:Oracle AI Database 26ai SQL Associate(1Z0-171-JPN)
資料確認日:2026-10-29
同じレッスンの問題
問題 2
Oracle AI Database 26aiの通常の永続表t_del(id)、t_trunc(id)にはそれぞれCOMMIT済みの2行だけがある。参照制約・トリガー等はなく、自動COMMITはOFFである。同一セッションで次を順に成功させた後、各表の行数はどれか。
DELETE FROM t_del;
ROLLBACK;
TRUNCATE TABLE t_trunc;
ROLLBACK;
問題 3
Oracle AI Database 26aiで、通常表items(id NUMBER PRIMARY KEY)には(1)、(2)の2行だけがある。次のALTERとSELECTを実行し、その後INSERTを試みる。追加の制約・トリガーはなく、DEFAULT ON NULLは指定しない。SELECTが返す合計とINSERTの成否の組はどれか。
ALTER TABLE items ADD (qty NUMBER DEFAULT 7 NOT NULL);
SELECT SUM(qty) FROM items;
INSERT INTO items (id,qty) VALUES (3,NULL);
問題 4
Oracle AI Database 26aiで、counter_t(id PRIMARY KEY,n NUMBER)の(1,10)はCOMMIT済みで、audit_ids(id NUMBER PRIMARY KEY)は空である。自動COMMITはOFF、制約は即時検査で、トリガー等はない。SQLクライアントはINSERTがエラーになっても次の文へ進む設定で、次を同一セッションで順に実行する。最後のnとaudit_idsの行数はどれか。
UPDATE counter_t SET n = 20 WHERE id = 1;
INSERT INTO audit_ids(id)
SELECT 1 FROM dual UNION ALL SELECT 1 FROM dual;
COMMIT;