SQL Server 添加SQL列,同时使用每行中的值填充该列

rqqzpn5f  于 2022-11-28  发布在  其他
关注(0)|答案(2)|浏览(182)

我有一个包含DateTime类型的列LastUpdated的表,我想向该表中添加一个列LastUpdated2。我想用表中现有的每一行的LastUpdated填充该列。
例如:
| 上次更新|
| - -|
| 中午12点01分|
| 下午五点|
变成:
| 上次更新|上次更新时间2|
| - -|- -|
| 中午12点01分|中午12点01分|
| 下午五点|下午五点|
很简单,如你所见,我只是想让他们匹配。
我看到了许多ALTER语句示例,这些示例都有默认值,但没有发现在更新时每行都有特定值的示例。
最理想的情况下,我希望我的代码是这样的,希望这个伪代码是有意义的:

ALTER TABLE dbo.Appointments
    ADD LastUpdated2 DATETIME
        DEFAULT (SELECT LastUpdated FROM CurrentRow)

我也考虑过可能只做一个ALTER语句,然后再做一个UPDATE语句。也许这是唯一的方法?

zsbz8rwp

zsbz8rwp1#

我认为没有办法在ALTER语句中单独完成这一切。需要两个单独的语句:

ALTER TABLE dbo.Appointments
ADD LastUpdated2 DATETIME

UPDATE dbo.Appointments
SET LastUpdated2 = LastUpdated

我想这就完成了我想做的事情。我很好奇是否有一种方法可以在ALTER语句中完成它,但也许没有。我在网上没有看到任何例子。

ruyhziif

ruyhziif2#

如果您希望它实际将数据存储到磁盘,则可以将其添加为computed column,持久化:

ALTER TABLE dbo.Appointments
ADD LastUpdated2 AS LastUpdated PERSISTED;

如果你需要它只匹配LastUpdated列,那么你可以通过ALTERUPDATE两个步骤来完成,就像你的答案一样。

相关问题