2012-10-15 20 views
1

我有一個包含了CreatedDate列的sql表。具有默認值的Sql表在傳遞NULL時不會保存

這是一個與安裝在數據庫中:綁定的(GETDATE())

默認值

ALTER TABLE [dbo].[Person] ADD CONSTRAINT [DF__Person__Creat__6XXXXXXX] DEFAULT (getdate()) FOR [CreatedDate] 
GO 

插入的作品時,我送default通過該列,但如果我送NULL我得到。

無法將NULL值插入'CreatedDate'列不允許空值。 INSERT失敗。

有什麼辦法讓這個工作,所以它會設置空發送通過當前日期?

+0

您能否顯示該列的整個聲明,包括約束? – dasblinkenlight

回答

0

,因爲你已經設置該列有contraint並已指定該列的默認值是當前日期GetDate()

+0

那麼有沒有更好的方法來達到我想要的效果,即自動設置插入日期? – user1745482

+0

不要在插入查詢中添加列,因此例如您有2列(colName,dateColumn),其中一列是查詢中默認值爲GetDate()的日期列,則可以省略該列,例如'INSERT INTO tableName(colName)VALUES('valueHere')' –

+0

是的,將日期列完全移出INSERT - 不要在列列表中指定它,並且不包括它的值在值列表中。 –

0

在猜測,你用這樣的INSERT語句的形式:

INSERT INTO TableName VALUES (Value1, Value2, . . .) 

相反,使用這種形式:

INSERT INTO TableName (Column1, Column2, Column4. . .) VALUES (Value1, Value2, Value4. . .) 

注意,第二種形式指定你包括哪些列FO值河只保留任何你想要存儲默認值的列。

這種形式的INSERT語句是總是更好,因爲如果表中列的數量或順序發生變化,它就不那麼脆弱了。它也更清晰並有助於調試。