2017-04-05 121 views
1

我有100行的表,并且添加了具有默认值的新列,如下所示。如何将默认值设置为现有行,同时将具有默认值的新列添加到表

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

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

是否有反正它默认默认值的默认值,而不是执行单独的更新语句为那些列显式更新默认值?

回答

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

虽然这段代码可能有助于解决问题,但它并没有解释_why_和/或_how_它是如何回答问题的。提供这种附加背景将显着提高其长期价值。请[编辑]您的答案以添加解释,包括适用的限制和假设。 –

-1

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

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