web-dev-qa-db-ja.com

SQL Serverの列の追加ステートメントで名前付きの既定の制約を作成できますか?

SQL Serverでは、テーブルに新しい列があります。

ALTER TABLE t_tableName 
    ADD newColumn NOT NULL

デフォルトの制約を指定せずにNOT NULLを指定したため、これは失敗します。テーブルにはデフォルトの制約がありません。

これを回避するには、デフォルトの制約でテーブルを作成してから削除します。

ただし、デフォルトの制約にこのステートメントの一部として名前を付ける必要があることを指定する方法はないようです。したがって、それを取り除く唯一の方法は、sys.default_constraintsでそれを検索するストアドプロシージャを持つことです。テーブル。

これは、多くの場合に発生する可能性のある操作にとっては少し厄介です。誰もこれに対してより良い解決策がありますか?

132
GlennS

これは動作するはずです:

ALTER TABLE t_tableName 
    ADD newColumn VARCHAR(50)
    CONSTRAINT YourContraintName DEFAULT '' NOT NULL
192
Joe Stefanelli
ALTER TABLE t_tableName 
    ADD newColumn int NOT NULL
        CONSTRAINT DF_defaultvalue DEFAULT (1)
83
Mitch Wheat