将列添加到现有表,将现有记录的默认值设置为 sysdate,对于新条目,将明天日期设置为明天日期



嗨,我正在学习 SQL,同时我找到了下面的任务,

在现有表中插入一个新列 StartDate,对于现有记录,应具有 sysdate,对于新条目,应具有明天的日期。

直到现在我做到了

ALTER TABLE test
ADD StartDate DATETIME NOT NULL DEFAULT (GETDATE());

从这里我无法前进,我认为任务本身不正确,我的想法是否正确,或者我们可以执行这项任务,请任何人帮助我。

首先阅读肖恩关于使专栏NULLABLE的评论。然后,将命令更改为:

默认值应为dateadd(day,1,getdate())。这将适用于您未在插入时指定值的未来插入。

ALTER TABLE test
ADD StartDate DATETIME NULL DEFAULT (DATEADD(DAY,1,GETDATE()));

对于其他行,您只需在更改此表后进行更新。

update table test
set StartDate = getdate()
where StartDate is null --which is every row that wasn't inserted after the change

然后,更改列以使其NOT NULL

ALTER TABLE test
ALTER COLUMN StartDate DATETIME NOT NULL DEFAULT (DATEADD(DAY,1,GETDATE()));

试试这个:

ADD StartDate2 DATETIME NOT NULL DEFAULT (DATEADD(DAY, 1,GETDATE()));

最新更新