ORACLE MASTER Silver SQL 26ai更新・定義・トランザクションの判断オリジナル・公式資料照合難易度★★★★☆
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;
A
n=10、audit_idsは0行
失敗したINSERTより前に成功したUPDATEまで自動的に取り消されるわけではありません。最後のCOMMITでn=20が確定します。
B
n=20、audit_idsは0行★ 正解
INSERTは文単位で全体を取り消しますが、先行するUPDATEは保持されます。処理継続後のCOMMITでそのUPDATEを確定します。
C
n=20、audit_idsは1行
即時制約違反で失敗したINSERTは、先に挿入できた行も含めて文全体が取り消されます。1行だけ残ることはありません。
D
n=20、audit_idsは2行
audit_idsの主キー制約に同じ1を2行格納できません。制約は即時検査で、INSERT文は失敗します。
解説
主キー1が重複するため、INSERT文全体が失敗してその文による変更はすべて取り消されます。先に成功したUPDATEは同じトランザクションに残っており、自動的には取り消されません。クライアントが処理を続けてCOMMITするため、n=20だけが確定し、audit_idsは0行です。
根拠資料・確認情報
対応範囲:Oracle AI Database 26ai SQL Associate(1Z0-171-JPN)
資料確認日:2026-10-29
同じレッスンの問題
問題 1
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;
問題 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);