2017-04-05 128 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'