CREATE TABLE の列の差分
旧と新の CREATE TABLE から、列の差分と ALTER TABLE の例を出す。
変更前と変更後の CREATE TABLE を貼り付けると、追加・削除・型の変更・NOT NULL の変更を一覧にし、PostgreSQL の ALTER TABLE の例を生成します。データを失う操作や失敗しやすい操作には警告を付けます。入力はブラウザの外へ送信しません。
旧と新の CREATE TABLE を貼り付けて列の差分を見る
入力した内容は送信されません。貼り付けた文字や選んだファイルは、お使いのブラウザの中だけで処理します。本サイトのサーバーや第三者へ送信・保存しません(通信を禁止する設定でページを配信しています)。
結果
エラー 0 件・警告 0 件・情報 0 件
指摘(エラー・警告・情報)
指摘はありません。
| 追加した列 | 1 個 |
|---|---|
| 削除した列 | 0 個 |
| 型の変更 | 0 個 |
| NOT NULL の変更 | 0 個 |
列の差分
| 差分 | 列 | 変更前 | 変更後 | ALTER TABLE の例 |
|---|---|---|---|---|
| 追加 | (なし) | text | ALTER TABLE users ADD COLUMN email text; |
初期表示は入力例「列を 1 つ足すだけの変更」の結果です。入力を変えるとその場で処理し直します。判定の根拠は仕様と根拠にまとめています。
ご利用にあたって
- 生成する ALTER TABLE は参考の例です。本番で実行する前に、バックアップと検証環境での確認を必ず行ってください。
- ドキュメントは PostgreSQL License で公開されています。このサイトはその内容を要約して参照しており、転載はしていません。
使い方
- 現在のスキーマの CREATE TABLE を「変更前」、変更したい形の CREATE TABLE を「変更後」に貼り付けます。
- まず「差分の表」で追加・削除・型・NOT NULL の変化を確かめます。
- 指摘のうち警告(データ喪失・失敗しやすい操作)を読み、必要なら手順を分けます。
- 「ALTER TABLE の例」に切り替えて文を確認し、検証環境で試してから使います。
入力例と結果
代表的な入力・境界の入力・壊れた入力の例です。例ごとに入力・出力・指摘と、その結果になる理由(検算)を載せています。
| 入力例 | 結果 |
|---|---|
| 列を 1 つ足すだけの変更 | エラー 0 件・警告 0 件・情報 0 件 |
| DEFAULT なしで NOT NULL の列を足す | エラー 0 件・警告 1 件・情報 0 件 |
| 列を削除する変更 | エラー 0 件・警告 1 件・情報 0 件 |
| 型を広げて同時に NOT NULL を付ける | エラー 0 件・警告 2 件・情報 0 件 |
| ALTER TABLE の例をテキストで見る | エラー 0 件・警告 0 件・情報 0 件 |
| CREATE TABLE ではない文を貼ったとき | エラー 1 件・警告 0 件・情報 0 件 |
このツールでできないこと(制約)
- 型は表記が同じかどうかで比べます。integer と int、varchar と character varying のような別名は同じ型と見なさず、型の変更として表示します。
- 列の名前の変更は見分けられず、削除と追加として表示します(データを残すなら RENAME COLUMN を使います)。
- 主キー・UNIQUE・CHECK・外部キー・索引・DEFAULT の変更は差分に含めません。表の制約が違うときは情報で知らせます。
- 生成する SQL は参考の例です。USING 式・データの移行・ロックの影響は自動では考えません。
よくある質問
列を削除するとデータは消えますか?
DROP COLUMN をすると、その列の値は SQL から読めなくなります。その列を含む索引や表の制約も一緒に消えるため、実行前にバックアップを取り、必要なら先に別の場所へ移してください。
型を変えるとき USING は必要ですか?
古い型から新しい型への暗黙の変換や代入の変換がない場合は USING 式が必要です。また USING は DEFAULT には適用されないため、DEFAULT を外して付け直す必要がある場合もあります。
貼り付けた CREATE TABLE はどこかに送られますか?
送られません。比較する処理はお使いのブラウザの中だけで行い、ページは通信を禁止する設定(CSP の connect-src)で配信しています。