1. ホーム
  2. sql-server

[解決済み] 既存のテーブルにNOT NULLカラムを挿入する

2022-04-28 04:29:06

質問

試してみました。

ALTER TABLE MY_TABLE 
ADD STAGE INT NOT NULL;

しかし、このようなエラーメッセージが表示されます。

ALTER TABLEでは、NULLを含むことができるカラム、もしくは DEFAULT定義が指定されている

解決方法は?

オプションとして、最初にNull-ableカラムを作成し、次にテーブルのカラムを有効なnot null値で更新し、最後にALTERカラムでNOT NULL制約を設定することができます。

ALTER TABLE MY_TABLE ADD STAGE INT NULL
GO
UPDATE MY_TABLE SET <a valid not null values for your column>
GO
ALTER TABLE MY_TABLE ALTER COLUMN STAGE INT NOT NULL
GO

もう一つの方法は、カラムに正しいデフォルト値を指定することです。

ALTER TABLE MY_TABLE ADD STAGE INT NOT NULL DEFAULT '0'


UPD: 上記の回答には、以下の内容が含まれています。 GO これは、このコードをMicrosoft SQL serverで実行する場合に必要なものです。もし、OracleやMySQLで同じ操作をしたい場合は、セミコロン ; というように。

ALTER TABLE MY_TABLE ADD STAGE INT NULL;
UPDATE MY_TABLE SET <a valid not null values for your column>;
ALTER TABLE MY_TABLE ALTER COLUMN STAGE INT NOT NULL;