列を削除する変更
変更前にある legacy 列を変更後で消した例です。DROP COLUMN の例と、値が読めなくなるデータ喪失の警告が出ることを確かめます。
入力
変更前の CREATE TABLE
CREATE TABLE logs (id integer, msg text, legacy text);
変更後の CREATE TABLE
CREATE TABLE logs (id integer, msg text);
結果の見せ方
差分の表
結果
エラー 0 件・警告 1 件・情報 0 件
指摘(エラー・警告・情報)
- 警告 変更前 1 行目 列 legacy を削除すると、その列の値は SQL から読めなくなり、その列を含む索引と表の制約も一緒に消えます。名前を変えただけなら DROP ではなく RENAME COLUMN を使ってください(このツールは名前の変更を見分けません)。依存する view や外部キーがあると既定の RESTRICT で失敗します(ALTER TABLE の DROP COLUMN)。
| 追加した列 | 0 個 |
|---|---|
| 削除した列 | 1 個 |
| 型の変更 | 0 個 |
| NOT NULL の変更 | 0 個 |
列の差分
| 差分 | 列 | 変更前 | 変更後 | ALTER TABLE の例 |
|---|---|---|---|---|
| 削除 | legacy | text | (なし) | ALTER TABLE logs DROP COLUMN legacy; |
検算(この結果になる理由)
変更前にだけ legacy 列があるので削除 1 件で、DROP COLUMN legacy の例になります。削除した列の値は SQL から読めなくなる(ALTER TABLE の DROP COLUMN)ため、警告が 1 件出ます。
判定の根拠は仕様と根拠に、仕様の出典とともにまとめています。自分の入力で試すにはツールをお使いください。
このツールの制約
- 型は表記が同じかどうかで比べます。integer と int、varchar と character varying のような別名は同じ型と見なさず、型の変更として表示します。
- 列の名前の変更は見分けられず、削除と追加として表示します(データを残すなら RENAME COLUMN を使います)。
- 主キー・UNIQUE・CHECK・外部キー・索引・DEFAULT の変更は差分に含めません。表の制約が違うときは情報で知らせます。
- 生成する SQL は参考の例です。USING 式・データの移行・ロックの影響は自動では考えません。
ご利用にあたって
- 生成する ALTER TABLE は参考の例です。本番で実行する前に、バックアップと検証環境での確認を必ず行ってください。
- ドキュメントは PostgreSQL License で公開されています。このサイトはその内容を要約して参照しており、転載はしていません。