DEFAULT なしで NOT NULL の列を足す

age 列を NOT NULL で追加し、DEFAULT を付け忘れた例です。既存の行がある表では追加に失敗する、よくある落とし穴を警告で確かめます。

入力

変更前の CREATE TABLE

CREATE TABLE members (id integer, name text);

変更後の CREATE TABLE

CREATE TABLE members (id integer, name text, age integer NOT NULL);

結果の見せ方

差分の表

結果

エラー 0 件・警告 1 件・情報 0 件

指摘(エラー・警告・情報)

  • 警告 変更後 1 行目 列 age は NOT NULL ですが DEFAULT がありません。DEFAULT のない新しい列は既存の行で NULL になるため、行のある表では追加に失敗します。DEFAULT を付けて追加し、後から外すなどの手順を検討してください(ALTER TABLE の ADD COLUMN)。
追加した列1 個
削除した列0 個
型の変更0 個
NOT NULL の変更0 個

列の差分

列の差分
差分列変更前変更後ALTER TABLE の例
追加age(なし)integer NOT NULLALTER TABLE members ADD COLUMN age integer NOT NULL;

検算(この結果になる理由)

変更後にだけ age 列があり追加 1 件です。DEFAULT のない新しい列は既存の行で NULL になる(ALTER TABLE の ADD COLUMN)ため NOT NULL と矛盾し、警告が 1 件出ます。

判定の根拠は仕様と根拠に、仕様の出典とともにまとめています。自分の入力で試すにはツールをお使いください。

このツールの制約

ご利用にあたって

  • 生成する ALTER TABLE は参考の例です。本番で実行する前に、バックアップと検証環境での確認を必ず行ってください。
  • ドキュメントは PostgreSQL License で公開されています。このサイトはその内容を要約して参照しており、転載はしていません。

ほかの入力例