हाँ, के रूप में @eaolson कहा, तुम प्राथमिक कुंजी कॉलम के लिए नहीं NULL निर्दिष्ट करने की आवश्यकता नहीं है, तो वे अपने आप नहीं 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 नल और col2 नहीं NULL है:
हालांकि, ओरेकल ट्रैक है कि आप इस मामले में स्पष्ट रूप से नहीं NULL निर्दिष्ट नहीं किया है प्राथमिक कुंजी अक्षम है या बाद में गिरा दिया रहता है। एक प्राथमिक कुंजी दोनों स्तंभ में परिवर्तन के लिए नहीं 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
आप को अक्षम या प्राथमिक कुंजी ड्रॉप, दोनों स्तंभ मूल स्थिति में लौट जाते हैं, CO1 फिर से नल हो जाता है:
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
स्रोत
2012-12-02 15:07:57
आप आसानी से इस परीक्षण कर सकते हैं स्वयं। आप दस्तावेज भी पढ़ सकते हैं! –
प्राथमिक कुंजी को शून्य नहीं होने की आवश्यकता है। लगभग 10 वर्षों में इसका इस्तेमाल नहीं किया है, लेकिन मेरा मानना है कि ओरेकल को स्पष्ट घोषणा की आवश्यकता है, क्योंकि अधिकांश अन्य आरडीबीएमएस –