仕様と根拠
比べるもの
最初の CREATE TABLE の括弧の中を最上位のカンマで分け、列名・型・NOT NULL の有無を読んで、列名で突き合わせます。変更後にだけある列は ADD COLUMN、変更前にだけある列は DROP COLUMN、型の表記が違えば ALTER COLUMN TYPE、NOT NULL の違いは SET NOT NULL または DROP NOT NULL の例にします。
警告にする条件
DROP COLUMN は列の値が SQL から読めなくなり、型の変更は通常、表と索引が書き換えられて変換できない値があると失敗します。NOT NULL を付けるのは NULL の行があると失敗し、DEFAULT のない NOT NULL 列の追加は既存の行が NULL になるため失敗します。いずれも ALTER TABLE のページの記載にもとづく警告です。
根拠にした仕様・資料
| 仕様・資料 | 確認日 | 使った箇所 |
|---|---|---|
| PostgreSQL 18 ドキュメント ALTER TABLE | 2026年10月28日 | ADD COLUMN・DROP COLUMN・ALTER COLUMN TYPE・SET/DROP NOT NULL の構文と注意 |
| PostgreSQL 18 ドキュメント 4.1 字句構造 | 2026年10月28日 | 4.1.1(識別子)・4.1.2(定数)・4.1.5(コメント) |
指摘の段階
- エラー: 仕様に反していて、正しく読めない・処理できない入力です。
- 警告: 読めるものの、仕様の推奨に反する・矛盾する・意図と違う結果になりやすい入力です。
- 情報: 誤りではありませんが、知っておくとよい扱い(読み飛ばした部分や解釈)です。
入力の扱い(送信しない仕組み)
処理はすべてお使いのブラウザの中で行います。処理の本体はこのサイトから配信する小さなスクリプト(/app.js)で、外部のサービスやライブラリを読み込みません。ページはブラウザに通信を禁止させる設定(Content-Security-Policy の connect-src)つきで配信しており、入力した内容がサーバーや第三者へ送られることはありません。ファイルを選んだ場合も、端末の中で読み込むだけです。
このツールでできないこと(制約)
- 型は表記が同じかどうかで比べます。integer と int、varchar と character varying のような別名は同じ型と見なさず、型の変更として表示します。
- 列の名前の変更は見分けられず、削除と追加として表示します(データを残すなら RENAME COLUMN を使います)。
- 主キー・UNIQUE・CHECK・外部キー・索引・DEFAULT の変更は差分に含めません。表の制約が違うときは情報で知らせます。
- 生成する SQL は参考の例です。USING 式・データの移行・ロックの影響は自動では考えません。
ご利用にあたって
- 生成する ALTER TABLE は参考の例です。本番で実行する前に、バックアップと検証環境での確認を必ず行ってください。
- ドキュメントは PostgreSQL License で公開されています。このサイトはその内容を要約して参照しており、転載はしていません。