🧚 お知らせ!Beekeeper Studioは高速でモダンなオープンソースのPostgreSQL GUIです ダウンロード
2024年8月19日 著者: Matthew Rathbone

PostgreSQLでテーブル名を変更するには、ALTER TABLE文にRENAME TO句を続けて使用します。

本題に入る前に、私たちのオープンソースのPostgreSQL GUI、Beekeeper Studioをご紹介させてください。サイドバーでテーブルを右クリックするだけで名前を変更でき、PostgreSQLでは無料でご利用いただけます。こちらからダウンロードできます。

構文

ALTER TABLE old_table_name RENAME TO new_table_name;

例

customersという名前のテーブルをclientsに変更したいとします。SQLコマンドは次のようになります。

ALTER TABLE customers RENAME TO clients;

上記のコマンドを実行すると、テーブルcustomersの名前がclientsに変更されます。名前の変更は、information_schemaをクエリするか、\dですべてのテーブルを一覧表示して確認できます。

SELECT table_name 
FROM information_schema.tables 
WHERE table_schema = 'public';

期待される出力:

table_name 
--------------
clients
other_table

依存関係のあるテーブルの名前変更

テーブル名を変更する際は、外部キー、インデックス、トリガーなどの既存の依存関係を考慮することが重要です。PostgreSQLはこれらを自動的に処理し、名前を変更したテーブルへの参照を更新します。

外部キーを使った例

ordersテーブルに、customersテーブルを参照する外部キーがあるとします。

CREATE TABLE orders (
    order_id SERIAL PRIMARY KEY,
    customer_id INT REFERENCES customers(customer_id)
);

customersをclientsに変更すると、PostgreSQLは外部キーの参照を自動的に更新します。

ALTER TABLE customers RENAME TO clients;

確認

外部キーが引き続き機能することを確認するには、簡単なINSERT文を実行します。

INSERT INTO clients (customer_id) VALUES (1);

INSERT INTO orders (customer_id) VALUES (1);

外部キーの参照が更新されていなければ、2つ目のINSERTは失敗します。成功すれば、PostgreSQLが参照を正しく更新したことになります。

スキーマ内のテーブルの名前変更

テーブルが特定のスキーマ内にある場合は、ALTER TABLEコマンドにスキーマを含める必要があります。

例

salesスキーマ内のテーブルsales.customersを考えてみましょう。

ALTER TABLE sales.customers RENAME TO clients;

テーブルsales.customersはsales.clientsになりました。salesスキーマ内のテーブルを一覧表示して確認できます。

SELECT table_name 
FROM information_schema.tables 
WHERE table_schema = 'sales';

期待される出力

table_name
-----------
clients
other_table

Beekeeper Studioを使う

Beekeeper Studioでのテーブル名の変更は簡単です。

  1. Beekeeper StudioでPostgreSQLデータベースに接続します。
  2. 左側のペインで、テーブルを含むスキーマを展開すると、テーブルの一覧が表示されます。
  3. 名前を変更したいテーブルを右クリックし、rename tableオプションを選択します。
  4. 新しいテーブル名を入力してEnterキーを押します。

あとはBeekeeper Studioが適切なSQLコマンドをPostgreSQLデータベースに発行して処理します。

注意点とベストプラクティス

  • インデックス名と制約名: PostgreSQLは外部キーなどの依存関係を自動的に更新しますが、インデックスや制約の名前は変更しません。インデックス名や制約名に古いテーブル名が含まれている場合は、手動で名前を変更する必要があるかもしれません。

  • 権限: テーブル名を変更しても権限には影響しません。古いテーブルにアクセスできたユーザーは、名前変更後のテーブルにも同じようにアクセスできます。

  • ビューの依存関係: テーブルに依存するビューは名前変更後も引き続き機能しますが、わかりやすさのために見直して更新するとよいでしょう。

まとめ

PostgreSQLでのテーブル名の変更は、シンプルながら重要な操作です。異なるスキーマ内のテーブルでも依存関係のあるテーブルでも、PostgreSQLはスムーズに処理を行い、すべての参照が正しく更新されるようにします。ベストプラクティスに従い、名前変更の仕組みを理解することで、データベースの整合性と構成を維持できます。

こちらの記事もおすすめです:

Beekeeper Studioは無料&オープンソースのPostgreSQL GUIです

まさに探していたPostgreSQLクライアントです!他との違いはUIです。クリーンで直感的、そしてパワフル。使いにくいPGAdminとはお別れです。 - David Cyprian

Beekeeper Studioは、高速で直感的、使いやすいPostgreSQLクライアントです。他にも多数のデータベースに対応しており、Windows、Mac、Linuxで快適に動作します。

BeekeeperのLinux版は100%フル機能。手抜きも機能の妥協も一切ありません。

PostgreSQLユーザーによるBeekeeper Studioの利用者の声

Jay Simons Jay Simons Designly.biz オーナー

pgAdminと違い、Beekeeperは驚くほどシンプルに使えるのに機能も充実しています。しかも価格も手頃です!データベースのバックアップ機能が特に便利です。本当に素晴らしいソフトウェアです。

Alex M

素晴らしいツールです。PostgresとMySqlのDB管理において、これまでで最も実用的なIDEです。面倒なことなく、とにかくちゃんと動きます :-)

PostgreSQLワークフローを改善しませんか?

download 無料でダウンロード