1. ホーム
  2. sql

DEFAULT値を持たないnot nullカラムを追加することは可能ですか?

2023-08-15 03:59:47

質問

私は DEFAULT 値を指定したくないのですが、MS-SQL 2005 は NOT NULL として指定したカラムを追加することができます。

ALTER TABLE は、NULL を含むか、DEFAULT 定義が指定されているか、追加される列が ID 列またはタイムスタンプ列であるか、あるいは、前の条件がどれも満たされない場合、この列の追加を許可するにはテーブルが空でなければならない列のみを追加することを許可しています。列 'test' はこれらの条件を満たさないため、空でないテーブル 'shiplist' に追加することはできません。

YESの場合、構文を教えてください。NOの場合、理由を明記してください。

どのように解決するのですか?

いいえ、できません。

なぜなら、もしできたとしたら、SQL はすでに存在するレコードに値として何を入れたらよいのかわからないからです。もし、テーブルにレコードがなければ、問題なく動作するでしょう。

これを行う最も簡単な方法は、デフォルトでカラムを作成し、その後、デフォルトを削除することです。

ALTER TABLE dbo.MyTable ADD
MyColumn text NOT NULL CONSTRAINT DF_MyTable_MyColumn DEFAULT 'defaultValue'
ALTER TABLE dbo.MyTable
DROP CONSTRAINT DF_MyTable_MyColumn

もう一つの方法は、制約なしで列を追加し、すべてのセルの値を埋めて、制約を追加することです。