不影响现有数据的SQL Server计算列

时间:2018-11-04 15:07:48

标签: sql-server

是否可以在不影响现有数据的情况下进行计算列?

我有一个唯一的索引列

"BookingNo"

对于新插入的列,我希望它遵循这种格式

(format([CreationTime],'yyMMddHHmmssff'))

我尝试使用计算列,但它修改了我所有的现有数据。

我现有的BookingNo格式为

201800123

反正有通过数据库生成的内容吗?还是我们通过代码插入了?

1 个答案:

答案 0 :(得分:2)

您可以添加默认约束:

ALTER TABLE TableName
    ADD CONSTRAINT DF_BookingNo DEFAULT(format(SYSDATETIME(),'yyMMddHHmmssff')) 
    FOR BookingNo

这样,您将仅获得新创建的行的值。

请注意,如果此列具有唯一性约束,则某些插入操作如果同时执行,则可能会失败。