1. ホーム
  2. sql-server

[解決済み] SQL Serverで、列の追加ステートメントで名前付きデフォルト制約を作成することはできますか?

2022-04-25 15:28:23

質問

SQL Serverで、あるテーブルに新しいカラムを追加しました。

ALTER TABLE t_tableName 
    ADD newColumn NOT NULL

これは、デフォルト制約を指定せずにNOT NULLを指定したために失敗しています。テーブルにはデフォルト制約がないはずです。

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

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

これは、何度も起こりそうな操作にしては、少し面倒で冗長です。どなたか良い解決策をお持ちではないでしょうか?

解決方法は?

これでうまくいくはずです。

ALTER TABLE t_tableName 
    ADD newColumn VARCHAR(50)
    CONSTRAINT YourContraintName DEFAULT '' NOT NULL