PostgreSQL のスキーマ内のテーブルの名前を変更する
PostgreSQL では、しばしば CREATE
テーブルを使用してデータを保存します。 次のようなテーブルを CREATE
すると:
create table cat (
ID int,
NAME text
)
テーブルを作成したときに、すでに NAME
をテーブルに割り当てています。 上記の例では、テーブルに CAT
という名前を付けました。これが修正されると、テーブルが作成されたら、おそらく別の手段を使用してテーブルを RENAME
する必要があります。
CREATING
テーブルの構文は次のようになります。
CREATE TABLE [Table_name] (
[variable_names] [variable_types]
)
スキーマ
とは何ですか? SCHEMA
には、テーブル、ビュー、インデックス、および場合によっては DBMS
内に含めることができるすべてのデータベース オブジェクトが含まれます。
それでは、テーブルが作成されたら、SCHEMA
内でテーブルを RENAME
する方法を学びましょう。
PostgreSQL の基本的な名前変更構文
PostgreSQL で既に作成されているテーブルの名前を変更するには、PostgreSQL スキーマ内で既に作成されているオブジェクトを変更または変更する傾向がある ALTER
ステートメントを使用できます。 テーブルを RENAME
する傾向がある ALTER
ステートメントは、構文を使用します。
ALTER TABLE [ IF EXISTS ] name
RENAME TO new_name
チュートリアルで何度か使用する CAT
テーブルの例を見てみましょう。 データベースで SELECT
操作を行うと、次のような結果が返されます。
Select * from information_schema.tables
where table_name = 'cat'
出力:
"postgres' "public" "cat" "BASE TABLE"
次に、次のように、このテーブルに対して RENAMING
操作を実行できます。
alter table CAT rename to KITTEN
そして今、データベースで CAT
を検索すると、空の結果が返されます。 ただし、KITTEN
を検索すると、CAT
テーブルと同じ値で完全に機能します。
"postgres" "public" "kitten" "BASE TABLE"
したがって、ALTER
関数を使用した基本的な RENAME
は完全に機能します。 何かを使用して、PSQL
でこれと同じクエリを実行できます。
ALTER TABLE cat rename to Kitten;
成功すると、次のような出力が返されます。
出力:
PostgreSQL の特定の SCHEMA
テーブルの RENAMING
中のエラー
構文エラーは、現在存在するテーブルとは異なる SCHEMA
内に作成されたテーブルに対して RENAME
操作を実行する際に発生する最も一般的なエラーの 1つです。
たとえば、次のように SCHEMA
を作成する傾向がある場合:
CREATE SCHEMA tester;
そして、その中にテーブルを作ります。
CREATE TABLE tester.dog (
id INT,
name TEXT
)
テーブルは、指定された SCHEMA
内に存在するようになりました。 ただし、次の方法で RENAME
操作を呼び出すと、エラーが返されます。
ALTER TABLE tester.dog RENAME TO tester.doggy
出力:
ERROR: syntax error at or near "."
LINE 1: ALTER TABLE tester.dog RENAME TO tester.doggy
なぜ? RENAME
のテキストを見ると、次のように書かれています。
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
RENAME [ COLUMN ] column_name TO new_column_name
new_column_name
は有効な STRING
でなければなりません。 そのため、.
などの他の文字は使用できません。 および ,
は、STRING
を無効にする可能性があります。
したがって、先に進んで次のようにするとします。
alter table tester.dog rename to doggy;
それは完全にうまくいきます。 さて、DOMAIN.DOG
テーブルを見ると、RENAMED
から DOMAIN.DOGGY
になっているはずです。
これを達成する別の方法は、テーブルを上記のように RENAME
する傾向がある回避策を使用することです。 現在 SCHEMA
を使用しているため、.
の使用中にエラーが発生する可能性があります。 SCHEMA
内のテーブルを指定する表記法。
次に、SEARCH PATHS
について学習します。
PostgreSQL の RENAMING
SCHEMA TABLES
のための SEARCH PATHS
SEARCH PATHS
は、現在参照されているSCHEMA
の参照をSEARCH PATH
構文で定義されたものに変更する傾向があるため、グローバルに定義されています。 次のような構文を使用します。
search_path (string)
CLIENT CONNECTION DEFAULTS
の下で定義されています。 次のクエリを実行して、TABLE
を RENAME
します。
SET search_path to tester;
alter table doggy rename to dogie
DOMAIN
スキーマへの search_path
を SETS
し、テーブル DOGI
を呼び出すと、テーブルが DOMAIN
スキーマから参照されていることを自動的に認識します。
したがって、この 1 行のクエリは、DOMAIN.TABLE_NAME
を呼び出すよりも、SCHEMA
内のテーブルを参照する方がはるかに優れています。
SEARCH_PATH
はカンマで区切られた複数の SCHEMA
名を持つこともでき、 TABLE
または OBJECT
を呼び出すと、これらの定義された SCHEMA
のそれぞれからチェックされます。
IF EXISTS
句を追加して、参照されている TABLE
または OBJECT
が存在するかどうかを確認してから実行することもできます。
さまざまなオプションとシナリオを使用して、PostgreSQL でテーブルを RENAME
する方法を学んだことを願っています。 多くの場合、RENAME
ステートメントのさまざまなバリエーションが機能することに注意してください。
データベースで作業するときは、どの SCHEMA
が参照されているか、どの OBJECT
が呼び出されているか、エラーを防止および回避するために必要な場所を把握してください。 私たちのソリューションが、テーブルを RENAMED
するさまざまな方法を理解するのに役立つことを願っています。
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub