ORACLE MASTER Silver SQL 26aiDMLとトランザクションオリジナル・公式資料照合難易度★★★☆☆
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);
A
2行、550
sourceにない既存行1を削除してしまった結果です。このMERGEにその削除指定はありません。
B
3行、650★ 正解
既存1を保持し、2を上書きし、3を追加した結果です。
C
3行、600
一致したid=2のUPDATEを反映していません。200は250へ変わります。
D
4行、850
id=2を更新でなく追加として二重計上しています。MATCHEDの枝は既存行の更新です。
解説
id=2は一致したので250へ更新し、id=3は未一致なので追加します。sourceにないid=1を削除する指定はありません。最終状態は(1,100)、(2,250)、(3,300)で合計650です。
根拠資料・確認情報
対応範囲:Oracle AI Database 26ai SQL Associate(1Z0-171-JPN)
資料確認日:2026-10-29
同じレッスンの問題
問題 1
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;
問題 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;