传递NULL时,默认值的Sql表将不会保存

时间:2012-10-15 00:48:46

标签: sql sql-server

我有一个包含CreatedDate列的sql表。

在数据库中设置:

Binding的默认值(getdate())

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

当我为该列发送default时,插入工作正常,但如果我发送NULL,我会得到。

无法将值NULL插入列'CreatedDate'列不允许空值。 INSERT失败。

有没有办法让它工作,所以它会设置当发送null时的当前日期?

2 个答案:

答案 0 :(得分:0)

因为您已在该列上设置了约束,并且您已指定该列的默认值为当前日期GetDate()

答案 1 :(得分:0)

猜测,您正在使用INSERT语句的形式,如下所示:

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

相反,请使用此表单:

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

请注意,第二个表单指定了包含值的列。只需省略要存储默认值的任何列。

这种形式的INSERT语句总是,因为如果表中列的数量或顺序发生变化,它就不那么脆弱了。它也更清晰,有助于调试。