我做一個數據庫基礎課程,並在後評估問題1:的SQL Server:瞭解默認值
的默認值必須爲NOT NULL列設置。真|虛假
我被引導認爲答案是正確的,因爲我回答錯誤,這是錯誤的,問題是我不明白爲什麼它是真實的。
如果問題是:
的默認值必須爲NOT NULL列使用ALTER TABLE添加新的列時設置。
然後我知道這是真的,並理解爲什麼。我是否誤讀了這個問題,還是誤解了其他地方?
任何幫助將不勝感激。 李。
我做一個數據庫基礎課程,並在後評估問題1:的SQL Server:瞭解默認值
的默認值必須爲NOT NULL列設置。真|虛假
我被引導認爲答案是正確的,因爲我回答錯誤,這是錯誤的,問題是我不明白爲什麼它是真實的。
如果問題是:
的默認值必須爲NOT NULL列使用ALTER TABLE添加新的列時設置。
然後我知道這是真的,並理解爲什麼。我是否誤讀了這個問題,還是誤解了其他地方?
任何幫助將不勝感激。 李。
你是對的。當列聲明爲not null
時,不需要默認定義。這是相當明顯的,如果你看一下syntax diagram for create table
:
<column_definition> ::= column_name <data_type> . . . [ CONSTRAINT constraint_name [ DEFAULT constant_expression ] ] . . . [ NULL | NOT NULL ]
如果在必要的語法,它看起來更像是這樣的:
<column_definition> ::= column_name <data_type> . . . [ CONSTRAINT constraint_name [ DEFAULT constant_expression ] ] . . . [ NULL | NOT NULL [CONSTRAINT constraint_name] DEFAULT constant_expression ]
我不是即使確定一個默認定義是not null
列的好主意。在很多情況下,您會希望insert
發生故障,而不是插入一些虛假值。
唯一的關係是,當altering tables有數據:
如果新列不允許空值和表不 空的,必須使用新列添加一個
DEFAULT
定義,和 在每個現有行的新列中自動加載新列 中的默認值。
這很明顯。對於新列,現有行將獲得NULL
值 - 但NOT NULL
約束不允許使用該值,因此需要DEFAULT
。
非常感謝您的解釋。我通過電子郵件向設置問題的人發送電子郵件,他們現在已經逐一修改了問題並更正了答案。背風處 –
_Default values_表示當值爲_NULL_時,它將採用_Default values_ insted,所以將列設置爲_NOT NULL_是真的嗎? – Sami
我認爲你是對的,讓我們想象一下,我們有一個商品庫存的表。您可以設置爲NOT NULL列PRICE的默認值? –
感謝您的回覆。假設我們有一個firstName和lastName列,它們都不是NULL,那麼你會得到什麼樣的默認值?當然,你會讓服務器響應所需的價值? –