如何在向表中添加具有默认值的新列时将默认值设置为现有行

时间:2017-04-05 18:32:14

标签: sql-server default alter

我有100行的表格,我正在添加默认值的新列,如下所示。

ALTER  TABLE AccountDetails
ADD    
   UpdatedOn      DATETIME    DEFAULT GETDATE(),
   UpdatedBy      VARCHAR(50) DEFAULT 'System'

执行此alter语句后,新列将添加到表中...这是完美的!但是,这些列的现有行的值将为NULL。

默认情况下是否存在默认值,而不是执行单独的更新语句以使这些列明确更新默认值?

2 个答案:

答案 0 :(得分:0)

ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
[WITH VALUES]

答案 1 :(得分:-1)

我自己得到了答案。如果我们在alter语句中也使用NOT NULL约束,那么在更改表以添加新列时,默认值将应用于新列,并且不会违反非null约束。

   ALTER  TABLE AccountDetails
   ADD    
   UpdatedOn    DATETIME    NOT NULL DEFAULT GETDATE(),
   UpdatedBy    VARCHAR(50) NOT NULL DEFAULT 'System'