2017-04-05 4 views
1

テーブルが100行あり、既定値の新しい列を以下に示すように追加しています。デフォルト値を持つ新しい列をテーブルに追加するときに既存の行に既定値を設定する方法

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

このalter文の実行後、新しい列がテーブルに追加されます。これは完璧です!これらの列の既存の行の値は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' 
関連する問題