2009-08-12 134 views
4

我有一個sql server nvarchar字段,其中有一個空字符串的「默認值或綁定」。它也恰好是一個非空字段。SQL Server 2000 - varchar字段的默認值

這是否意味着沒有默認值或者它是沒有字符的字符串的默認值。

如果我不插入一個值,它會插入一個空字符串還是失敗並出現「not null」錯誤?

回答

3

默認值爲空白(空)字符串。

如果您沒有提供值,則插入將會成功並且該值將爲空,而不是空值。

1

如果您有一個真正的空字符串作爲默認字符串,那麼它會自動填充0長度的字符串。

你應該小心,以確保它是一個0長度的字符串,而不是沒有。例如,如果您正在查看SSMS的表構建器gui,並且它顯示「缺省值或綁定」的空白,這意味着沒有默認值,並且插入將在未填充時失敗。如果你想要它有一個長度爲0的字符串,用''(兩個單引號一起中間沒有任何內容)填充它。

0

列的缺省值就是這樣 - sql server會在你不爲專欄提供一個。該列中的值將是一個空字符串。 NOT NULL錯誤不會發生

3

它一樣(假設數據是有問題的COL):

create table #t (id int, data varchar(100) not null default('')) 

所以:

insert into #t (id) values (1) 
insert into #t (id,data) values (2,default) 
insert into #t (id,data) values (3, 'allowed') 

select * from #t 

將返回

 
1 
2 
3 allowed 

和..

insert into #t (id,data) values (1, null) 
-- will error