初期値を持つ MS SQL 2005 データベースに新しい列を追加する必要があります。ただし、この列にデフォルトの制約を自動的に作成したくありません。列を追加した時点では、デフォルト/初期値は正しいですが、これは時間の経過とともに変化する可能性があります。したがって、テーブルへの今後のアクセスでは、デフォルトを受け入れる代わりに値を指定する必要があります。
私が思いつくことができる最高のものは次のとおりです。
ALTER TABLE tbl ADD col INTEGER NULL
UPDATE tbl SET col = 1
ALTER TABLE tbl ALTER COLUMN col INTEGER NOT NULL
これは、大規模なテーブル (100,000 から 1,000,000 レコード) では少し効率が悪いようです。
デフォルトで列を追加してから、デフォルトの制約を削除して実験しました。ただし、デフォルトの制約の名前が何であるかはわかりません。sysobjects にアクセスせず、データベース固有の知識を入れたくありません。
もっと良い方法があるはずです。