插入日期的默认getdate

时间:2011-01-12 17:49:52

标签: sql sql-server sql-server-2005 tsql

我有一个名为sample的表,它有一个名为[__INSERT_DATE]的列,它是null。现在我想更改默认为getdate()的列。当我尝试以下操作时,它给了我一个错误。

ALTER TABLE sample
ALTER COLUMN [__INSERT_DATE] [datetime] DEFAULT (getdate()) NULL)

谁能告诉我这是什么问题?

8 个答案:

答案 0 :(得分:28)

试试这个:

ALTER TABLE MyTable ADD CONSTRAINT
DF_MyTable_Inserted DEFAULT GETDATE() FOR INSERT_DATE
GO

这假定您的表名为MyTable,列为INSERT_DATE,并且约束的名称为DF_MyTable_Inserted

答案 1 :(得分:3)

试试这个:

ALTER TABLE sample ADD CONSTRAINT DF_sample___INSERT_DATE DEFAULT(GETDATE()) FOR __INSERT_DATE

答案 2 :(得分:1)

MSDN给出了这个例子:

ALTER TABLE MyCustomers ALTER COLUMN CompanyName SET DEFAULT 'A. Datum Corporation'

那会给你

  ALTER TABLE sample ALTER COLUMN __INSERT_DATE SET DEFAULT GETDATE()

答案 3 :(得分:1)

ALTER TABLE sample ALTER COLUMN [__INSERT_DATE] [datetime] DEFAULT (getdate()) NULL)

上面的语句中有一个太多的结束括号。其中有2个 - > (但其中3个 - >)

答案 4 :(得分:1)

我能够使用SSManagement Studio

来做到这一点

Setting default in SSMS - Screen Shot

使日期字段不可为空,然后从属性 将Defalut Value或Binding设置为getdate()

答案 5 :(得分:0)

getdate()是否为您声明的列返回正确的日期和时间数据类型? SQL Server 2008中有一些新的日期和时间数据类型。

这是一篇解释其中一些差异的文章。

http://www.sql-server-performance.com/articles/dev/datetime_2008_p1.aspx

答案 6 :(得分:0)

enter image description here

(Your_Date_Column)将其设置为Null / Not Null,并提供默认值GetDate(),但仍然无法使用。 您必须创建一个这样的触发器,

创建触发器[dbo]。[Trigger_Date]     开启[dbo]。[TableName]     插入     如     开始

    Declare @Id int
    set @Id = (select Id from inserted)

    Update [dbo].[TableName]
    Set Your_Date_Column = GetDate()
    Where Id = @Id
END

答案 7 :(得分:0)

这种方式对我有用:

ALTER TABLE sample ALTER COLUMN INSERT_DATE [datetime] NULL DEFAULT GetDate()

如果列中已有值,则可以执行以下操作:

Alter Table sample add INSERT_DATE_TEMP [datetime] NOT NULL DEFAULT GetDate()
Update sample
SET INSERT_DATE_TEMP = INSERT_DATE
Alter Table sample Drop Column INSERT_DATE
exec sp_rename 'sample.INSERT_DATE_TEMP','INSERT_DATE','COLUMN'
相关问题