ORACLE MASTER Silver SQL 26ai更新・定義・トランザクションの判断オリジナル・公式資料照合難易度★★★☆☆
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);
A
合計はNULL、INSERTは成功する
列追加のDEFAULTは既存行の検索値にも適用されます。またNOT NULL制約が明示したNULLを拒否します。
B
合計は14、INSERTは成功してqtyは7になる
NULLを明示したINSERTでもデフォルト値を使うDEFAULT ON NULLは指定されていません。通常のDEFAULTと区別します。
C
合計は0、INSERTは失敗する
NOT NULLが数値0を自動で設定するわけではありません。既存行のqtyはDEFAULTの7になります。
D
合計は14、INSERTはNOT NULL違反で失敗する★ 正解
既存2行のqtyは7ずつです。新しい行に明示したNULLは通常のDEFAULTでは補われず、制約違反になります。
解説
列追加時のDEFAULT 7によって、既存の2行を検索したqtyはそれぞれ7となり、合計は14です。通常のDEFAULTは、INSERTで明示したNULLを7に置換しません。qtyにNOT NULLがあるため、最後のINSERTは失敗します。物理的な格納最適化の有無は検索結果に影響しません。
根拠資料・確認情報
対応範囲: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;
問題 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;