はい、@eaolsonによると、主キー列にNOT NULLを指定する必要はなく、自動的にNOT NULLに設定されます。
はしかし、Oracleはプライマリキーは、後に無効または削除される場合には、明示的にNOT NULLを指定していないことを追跡し続ける:
create table mytable (
col1 number,
col2 number not null
);
select table_name, column_name, nullable
from user_tab_columns where table_name = 'MYTABLE';
TABLE_NAME COLUMN_NAME NULLABLE
------------ ------------ ---------
MYTABLE COL1 Y
MYTABLE COL2 N
予想したように、COL1は、NOT NULL NULL可能とcol2です。 NOT NULL主キーの変更両方の列を:あなたは無効にするか、主キーを削除した場合、両方の列が元の状態に戻す、CO1は再びNULL可能
alter table mytable add primary key (col1, col2);
select table_name, column_name, nullable
from user_tab_columns where table_name = 'MYTABLE';
TABLE_NAME COLUMN_NAME NULLABLE
------------ ------------ ---------
MYTABLE COL1 N
MYTABLE COL2 N
を次のようになります。
alter table mytable disable primary key;
select table_name, column_name, nullable
from user_tab_columns where table_name = 'MYTABLE';
TABLE_NAME COLUMN_NAME NULLABLE
------------ ------------ ---------
MYTABLE COL1 Y
MYTABLE COL2 N
あなたはこれを簡単にテストすることができあなた自身。あなたはドキュメントを読むことさえできます! –
主キーはNOT NULLである必要があります。ほとんどのRDBMSがそうしているように、オラクルは明示的に宣言する必要があると私は信じています。 –