2011-09-23 41 views
15

我有這樣最初創建一個表:是否有理由在可空列上指定DEFAULT(NULL)?

CREATE TABLE dbo.XX (
YY int DEFAULT(NULL) 
) 

如果你這樣做,然後腳本後在桌子上,你會得到下面的代碼,再加上一個隨機命名的默認約束:

CREATE TABLE [dbo].XX([YY] [int] NULL) 
GO 
ALTER TABLE [dbo].XX ADD DEFAULT (NULL) FOR [YY] 
GO 

現在有沒有什麼真正的要點在列上指定DEFAULT (NULL)而不是僅僅把它作爲[YY] [int] NULL放在第一位呢?

+0

在我熟悉的任何數據庫中沒有任何一點。 –

+11

第二個想法是,雖然它不會改變數據的添加方式,但我猜它可能被認爲是設計意圖的表達式(「我打算將此列添加爲NULL,我並沒有忘記設置一個默認的「),這使得數據庫的設計更清晰,讓下一個人前來。 –

+0

下一個(相關)的問題:在列中指定NULL是否有任何缺點,而不是首先將其保留爲[[yy] [INTEGER]]? – onedaywhen

回答

16

沒有必要將DEFAULT(NULL)添加到可爲空的列。

如果數據不提供給這些列,他們將有一個NULL

我看到的唯一好處是一個Larry Lustig在他對該問題的評論中發佈 - 它記錄了您沒有忘記將默認值添加到可空列的事實。

+0

在刪除列之前,需要首先刪除默認約束 – Helic

6

沒有,我能想到的。

INSERT INTO [dbo].XX([YY]) VALUES (DEFAULT) 

INSERT INTO [dbo].XX([YY]) DEFAULT VALUES 

工作相同的兩種方式。

相關問題