Re: 問題ID: 8536 NOT NULL制約

この質問の投稿一覧へ

なし Re: 問題ID: 8536 NOT NULL制約

msg# 1.1
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2018-8-23 23:12
quensan  長老   投稿数: 119
>→問題文のEMPLOYEES表のEMPLOYEE_ID列はNOT NULLとなっています。
PRIMARY KEY制約の列をdescribeコマンドで見ると、自動的に適用されたNOT NULLが表示されます。
だから問題文には「EMPLOYEES表のEMPLOYEE_ID列にはPRIMARY KEY制約だけが定義されています。」と書かれているのではないでしょうか。

SQL> create table t1 (
2 id number(4) primary key,
3 text varchar2(10)
4 );

表が作成されました。

SQL> desc t1
名前 NULL? 型
------ -------- ----------------------------
ID NOT NULL NUMBER(4)
TEXT VARCHAR2(10)

実際の制約の種類はuser_constraints表などで確認できます。constraint_typeの「P」はPRIMARY KEY制約です。

SQL> select constraint_name, constraint_type, table_name, status from user_constraints where table_name = 'T1';

CONSTRAINT_NAME CON TABLE_NAME STATUS
-------------------- --- -------------------- ------------------------
SYS_C0011069 P T1 ENABLED

>そもそも、PRIMARY KEYを設定した列には自動的にNOT NULL制約が適用されるのではないでしょうか?
解説にあるように、明示的に定義されたNOT NULL制約だけが、副問合せによって新たに作成された表にコピーされます。

投稿ツリー

  >フォーラム検索へ


Copyright (c) 2020 Ping-t All rights reserved.