我有一个名为sample的表,它有一个名为[__INSERT_DATE]的列,它是null。现在我想更改默认为getdate()
的列。当我尝试以下操作时,它给了我一个错误。
ALTER TABLE sample
ALTER COLUMN [__INSERT_DATE] [datetime] DEFAULT (getdate()) NULL)
谁能告诉我这是什么问题?
答案 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)
答案 5 :(得分:0)
getdate()是否为您声明的列返回正确的日期和时间数据类型? SQL Server 2008中有一些新的日期和时间数据类型。
这是一篇解释其中一些差异的文章。
http://www.sql-server-performance.com/articles/dev/datetime_2008_p1.aspx
答案 6 :(得分:0)
(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'