2016-09-27 24 views
1

既存の列を変更して整数列を追加しようとしています。整数列を追加している間、私は10としてDEFAULTを設定していますが、テーブル 'DEFAULT'をデフォルト値に設定しない - SQL Server

ALTER TABLE dbo.Contacts ADD Col1 INT DEFAULT 10 

は、私は、デフォルト値として、すべての過去の記録を設定するには、明示的な更新スクリプトを実行するために必要と列を追加するときにデフォルトが設定されていない

列がある場合に一方'not null'の場合、すべてのレコードに対してデフォルト値は10です。

ALTER TABLE dbo.Contacts ADD Col2 INT NOT NULL DEFAULT 10 

null値の列がデフォルト値で設定されていないのはなぜですか?私の実際のテーブルでは、私は850 milレコードに近く、私の新しい列はnull許容列です。私はALTERテーブル・スクリプトの後にもう1つの更新を避けようとしています。方法は何ですか?

私はデフォルトで10を持つnull可能でない列を作成し、再び制約をNULLに変更することを考えています。この素晴らしいアプローチですか?他の方法?

+1

にdefaultを手段の定義を割り当てられません、それは 'null'なのですることはできませんし、値 '10'常に – techspider

+2

試みがあります'nullではない'列に 'DEFAULT'を追加するには' WITH VALUES'を追加してください。 – techspider

答えて

3

値を取得するにはWITH VALUESを使用する必要があります。 2016:

ALTER TABLE sales.orders 
ADD c1 INT DEFAULT 10 WITH VALUES 
GO 
+0

はい 'With Values'は完全に正常に動作します... –

+0

2番目のクエリはデフォルトでは設定されていませんnullable列 –

+0

違いを確認できるように両方のオプションを表示していました。混乱を減らし、答えを残すために削除する。 – dfundako

0

既定の列の値が定義された後、テーブルに挿入された新しい行に既定の列の値が適用されます。これをテストするには、このようなINSERTコマンドを試してください。

INSERT INTO TableName col1 VALUES (col1_value) 

このINSERTの後、col2値は、挿入された行のデフォルト値10を取得する必要があります。

しかし、テーブル内の既存の行が自動的に新しいデフォルトの列値

関連する問題