ORACLE MASTER Silver SQL 26ai表・制約・一時表とビューオリジナル・公式資料照合難易度★★★☆☆
Oracle AI Database 26aiで次の表を作成した。列qtyにNOT NULL制約はなく、他の制約・トリガーもない。次のA、Bをそれぞれ実行した場合の成否はどれか。 CREATE TABLE stock (qty NUMBER CHECK (qty > 0)); A: INSERT INTO stock(qty) VALUES(NULL); B: INSERT INTO stock(qty) VALUES(-1);
A
AもBもCHECK制約違反
CHECKの条件がUNKNOWNである行を、FALSEの行と同じに扱っています。NULLの禁止は明示されていません。
B
Aは成功、BはCHECK制約違反で失敗★ 正解
UNKNOWNとFALSEを区別した結果です。NULL禁止は示されたCHECKから自動では導かれません。
C
AもBも成功
-1は正数条件に反するため、CHECKにより拒否されます。
D
AはNOT NULL制約違反、Bは成功
NOT NULL制約はなく、Bはqty > 0がFALSEです。二つの条件の扱いが逆です。
解説
CHECKは条件がFALSEになる行を拒否します。NULL > 0はUNKNOWNなので、このCHECKだけではNULLを禁止しません。-1 > 0はFALSEで拒否されます。NULLも禁止したい場合はNOT NULL等の設計を別に行います。
根拠資料・確認情報
対応範囲:Oracle AI Database 26ai SQL Associate(1Z0-171-JPN)
資料確認日:2026-10-29
同じレッスンの問題
問題 1
Oracle AI Database 26aiで、通常の永続表t(id PRIMARY KEY, amount NUMBER)の(1,100)はCOMMIT済みである。同一セッションで次を順に実行し、CREATE TABLEも成功した。自動COMMITはOFF、別セッションの更新やトリガーはない。最後のtのamountとnew_marker表の状態はどれか。
UPDATE t SET amount = 150 WHERE id = 1;
CREATE TABLE new_marker (id NUMBER);
ROLLBACK;
問題 3
Oracle AI Database 26aiで次のグローバル一時表を作成済みである。同一セッションで2行INSERTし、COMMITした直後の説明はどれか。別のDMLやDDLは実行しない。
CREATE GLOBAL TEMPORARY TABLE work_ids (id NUMBER)
ON COMMIT DELETE ROWS;
問題 4
Oracle AI Database 26aiで通常表staff(emp_id PRIMARY KEY, dept_id NUMBER)に(1,10)だけがある。次の単純で更新可能なビューを作成済みで、INSTEAD OF等のトリガーや追加制約はない。続くUPDATEの説明はどれか。
CREATE VIEW dept10_staff AS
SELECT emp_id, dept_id FROM staff WHERE dept_id = 10
WITH CHECK OPTION;
UPDATE dept10_staff SET dept_id = 20 WHERE emp_id = 1;