Sì, come ha detto @eaolson, non è necessario specificare NOT NULL per le colonne della chiave primaria, esse vengono impostate automaticamente su NOT NULL.
Tuttavia, Oracle registra che non è stato specificato NOT NULL esplicitamente nel caso in cui la chiave primaria è disattivata o è sceso in seguito:
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
Come previsto, col1 è nullable e col2 NOT NULL. Una chiave primaria cambia entrambe le colonne di NOT 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
Se si disattiva o cadere la chiave primaria, entrambe le colonne ritornano allo stato originale, co1 diventa di nuovo annullabili:
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
fonte
2012-12-02 15:07:57
si potrebbe facilmente verificare questa te stesso. Potresti anche leggere la documentazione! –
Una chiave primaria deve essere NOT NULL. Non l'ho usato in quasi 10 anni, ma credo che Oracle richieda una dichiarazione esplicita, come la maggior parte degli altri RDBMS fanno la dimostrazione di Nizza –