ORACLE MASTER Silver SQL 26aiDMLとトランザクションオリジナル・公式資料照合難易度★★★☆☆
Oracle AI Database 26aiでreview_a(amount NUMBER)、review_b(amount NUMBER)は空であり、トリガーや追加制約はない。次を1回成功させた後の各表の行数はどれか。 INSERT ALL WHEN amount >= 50 THEN INTO review_a(amount) VALUES(amount) WHEN amount >= 70 THEN INTO review_b(amount) VALUES(amount) SELECT 75 AS amount FROM dual;
A
review_aに1行、review_bに1行★ 正解
INSERT ALLで二つの条件がともにTRUEなので、両枝のINSERTが実行されます。
B
review_aに1行、review_bに0行
最初の一致で後続条件を調べないINSERT FIRSTの挙動と混同しています。
C
review_aに0行、review_bに1行
最後に一致した条件だけを実行する指定ではありません。最初の条件もTRUEです。
D
どちらも0行
SELECTは75の入力行を1件返し、少なくとも一方どころか両条件に一致します。
解説
条件付きINSERT ALLは、入力行についてTRUEとなるWHENのそれぞれへ挿入します。75は両方の閾値を満たすため各表1行です。最初に一致した枝で終了するINSERT FIRSTとは区別します。
根拠資料・確認情報
対応範囲:Oracle AI Database 26ai SQL Associate(1Z0-171-JPN)
資料確認日:2026-10-29
同じレッスンの問題
問題 2
Oracle AI Database 26aiでtarget_items(id PRIMARY KEY, price NUMBER)は(1,100)、(2,200)、source_itemsは(2,250)、(3,300)だけである。source_itemsのidも一意で、トリガーや別の更新はない。次が成功した後のtarget_itemsの行数とSUM(price)はどれか。
MERGE INTO target_items t
USING source_items s ON (t.id = s.id)
WHEN MATCHED THEN UPDATE SET t.price = s.price
WHEN NOT MATCHED THEN INSERT (id, price) VALUES (s.id, s.price);
問題 3
Oracle AI Database 26aiでemployees(emp_id PRIMARY KEY, dept_id, salary NUMBER)は(1,10,100)、(2,20,100)、raises(dept_id PRIMARY KEY, increment_amount NUMBER)は(10,20)だけである。次が成功した後のemp_id=1、2のsalaryの組はどれか。
UPDATE employees e
SET salary = salary +
(SELECT r.increment_amount FROM raises r WHERE r.dept_id = e.dept_id)
WHERE EXISTS
(SELECT 1 FROM raises r WHERE r.dept_id = e.dept_id);
問題 4
Oracle AI Database 26aiでt(id PRIMARY KEY, amount NUMBER)の(1,100)は既にCOMMIT済みである。同一セッションで次を順に実行し、全て成功した。他のトランザクション、DDL、トリガーはない。最後のamountはどれか。
UPDATE t SET amount = 110 WHERE id = 1;
SAVEPOINT after_first;
UPDATE t SET amount = 120 WHERE id = 1;
ROLLBACK TO after_first;
COMMIT;