1. ホーム
  2. sql

[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する

2022-03-18 18:37:43

質問

の既存のテーブルに、デフォルト値を持つカラムを追加するにはどうすればよいですか? SQL Server 2000 / SQL Server 2005 ?

解決方法は?

シンタックス

ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES

ALTER TABLE SomeTable
        ADD SomeCol Bit NULL --Or NOT NULL.
 CONSTRAINT D_SomeTable_SomeCol --When Omitted a Default-Constraint Name is autogenerated.
    DEFAULT (0)--Optional Default-Constraint.
WITH VALUES --Add if Column is Nullable and you want the Default Value for Existing Records.

注意事項

オプションの制約条件名。

を省略した場合 CONSTRAINT D_SomeTable_SomeCol を使用すると、SQL Server は自動生成します。

    のようなおかしな名前の Default-Contraint を作成します。 DF__SomeTa__SomeC__4FB7FEF6

オプションのWith-Valuesステートメント。

WITH VALUES は、カラムが Nullable の場合のみ必要です。

    で、既存のレコードにデフォルト値を使用したい場合。

カラムが NOT NULL の場合、自動的にデフォルト値が使用されます。

    を指定した場合でも、すべての既存レコードに対して WITH VALUES を指定します。

Default-ConstraintでInsertがどのように機能するか。

にレコードを挿入した場合 SomeTable を実行し ない 指定する SomeCol の値である場合、それはDefaultになります。 0 .

レコードを挿入した場合 指定する SomeCol の値を NULL (そして、あなたのカラムはヌルを許します)。

    とすると、デフォルト制約が ではない 使用され NULL がValueとして挿入されます。

メモは、以下の皆さんからの素晴らしいフィードバックに基づいています。

Special Thanks to:

    Yatrixさん、WalterStaboszさん、YahooSeriousさん、StackManさんにコメントをいただきました。