Benennen Sie eine Tabelle innerhalb eines Schemas in PostgreSQL um

Bilal Shahid 20 Juni 2023
Benennen Sie eine Tabelle innerhalb eines Schemas in PostgreSQL um

In PostgreSQL neigen wir oft dazu, Tabellen zu ERSTELLEN und sie zum Speichern von Daten zu verwenden. Wenn wir eine Tabelle wie folgt ERSTELLEN:

create table cat (
    ID int,
    NAME text
)

Wir haben unserem Tisch bereits bei der Erstellung einen NAMEN zugewiesen. Im obigen Beispiel haben wir unserer Tabelle den Namen CAT gegeben, und sobald dies behoben ist, müssen wir wahrscheinlich andere Mittel verwenden, um unsere Tabelle zu UMBENENNEN, sobald sie erstellt wurde.

Die Syntax zum ERSTELLEN einer Tabelle lautet wie folgt:

CREATE TABLE [Table_name] (
     [variable_names] [variable_types]
)

Was ist ein SCHEMA? Ein SCHEMA enthält Datenbankobjekte wie Tabellen, Ansichten, Indizes und möglicherweise alles, was in Ihrem DBMS enthalten sein kann.

Lassen Sie uns nun fortfahren und lernen, wie wir unsere Tabelle in unserem SCHEMA UMBENENNEN können, sobald sie erstellt wurde.

die grundlegende Umbenennungssyntax in PostgreSQL

Um eine bereits in PostgreSQL erstellte Tabelle umzubenennen, können wir die Anweisung ALTER verwenden, die dazu neigt, Änderungen vorzunehmen oder ein bereits im PostgreSQL-Schema erstelltes Objekt zu modifizieren. Eine ALTER-Anweisung, die dazu tendieren würde, eine Tabelle RENAME zu machen, verwendet Syntax.

ALTER TABLE [ IF EXISTS ] name
    RENAME TO new_name

Nehmen wir als Beispiel die Tabelle CAT, die wir in unseren Tutorials mehrfach verwenden. Eine SELECT-Operation auf unserer Datenbank würde etwas wie folgt zurückgeben.

Select * from information_schema.tables
where table_name = 'cat'

Ausgang:

"postgres'        "public"    "cat"        "BASE TABLE"

Und dann können wir die Operation RENAMING für diese Tabelle wie folgt durchführen.

alter table CAT rename to KITTEN

Und jetzt, wenn wir in unserer Datenbank nach CAT suchen, würde es ein leeres Ergebnis zurückgeben. Das Nachschlagen von KITTEN würde jedoch mit den gleichen Werten wie die CAT-Tabelle perfekt funktionieren.

"postgres"	"public"	"kitten"	"BASE TABLE"

Daher funktioniert unser einfaches RENAME mit der ALTER-Funktion perfekt. Sie können dieselbe Abfrage in PSQL ausführen, indem Sie etwas verwenden.

ALTER TABLE cat rename to Kitten;

Und es wird bei Erfolg die Ausgabe wie folgt zurückgeben.

Ausgang:

Tabelle ändern

Fehler beim UMBENENNEN bestimmter SCHEMA-Tabellen in PostgreSQL

Der Syntaxfehler ist einer der häufigsten Fehler bei der Durchführung einer RENAME-Operation an einer Tabelle, die in einem SCHEMA erstellt wurde, das sich von dem derzeit vorhandenen unterscheidet.

Wenn Sie beispielsweise dazu neigen, ein SCHEMA wie folgt zu erstellen:

CREATE SCHEMA tester;

Und dann machen Sie einen Tisch darin.

CREATE TABLE tester.dog (
   id INT,
   name TEXT
)

Die Tabelle befindet sich nun innerhalb des angegebenen SCHEMA. Wenn Sie jedoch die Operation RENAME auf folgende Weise aufrufen, wird ein Fehler zurückgegeben.

ALTER TABLE tester.dog RENAME TO tester.doggy

Ausgang:

ERROR:  syntax error at or near "."
LINE 1: ALTER TABLE tester.dog RENAME TO tester.doggy

Warum? Wenn Sie sich den Text UMBENENNEN ansehen, sagt er etwas wie folgt.

ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
    RENAME [ COLUMN ] column_name TO new_column_name

Der new_column_name muss ein gültiger STRING sein. Sie können also keine anderen Zeichen wie . verwenden. und ,, was einen STRING ungültig machen kann.

Wenn Sie also fortfahren und etwas wie folgt tun.

alter table tester.dog rename to doggy;

Es wird einwandfrei funktionieren. Wenn wir uns also jetzt die Tabelle DOMAIN.DOG ansehen, wäre sie RENAMED in DOMAIN.DOGGY gewesen.

Eine andere Möglichkeit, dies zu erreichen, besteht darin, eine Problemumgehung zu verwenden, die dazu neigt, die Tabelle in etwas zu UMBENENNEN, das wir oben sehen. Da wir derzeit mit einem SCHEMA arbeiten, können bei der Verwendung des . Fehler auftreten. Notation, um eine Tabelle innerhalb eines SCHEMA zu spezifizieren.

Jetzt werden wir weitermachen und etwas über SUCHPFADE lernen.

SEARCH PATHS für UMBENENNEN SCHEMA TABLES in PostgreSQL

SUCHPFADE sind global so definiert, dass sie dazu neigen, die Referenz des aktuell referenzierten SCHEMA zu derjenigen zu ändern, die in der SUCHPFAD-Syntax definiert ist. Es verwendet die folgende Syntax.

search_path (string)

Und wird unter CLIENT CONNECTION DEFAULTS definiert. Führen Sie die folgende Abfrage aus, um die TABELLE zu UMBENENNEN.

SET search_path to tester;
alter table doggy rename to dogie

Es SETS den search_path auf das DOMAIN-Schema, und wenn wir dann die Tabelle DOGI aufrufen, weiss es automatisch, dass die Tabelle vom DOMAIN-Schema referenziert wird.

Daher ist diese einzeilige Abfrage viel besser geeignet, um Tabellen innerhalb eines SCHEMA zu referenzieren, als eine DOMAIN.TABLE_NAME aufzurufen.

SEARCH_PATH kann auch mehrere SCHEMA-Namen haben, die durch Kommas getrennt sind, und wenn wir eine TABLE oder OBJECT aufrufen, wird es von jedem dieser definierten SCHEMAS geprüft.

Sie können auch die Klausel IF EXISTS hinzufügen, um zu prüfen, ob die referenzierte TABLE oder OBJECT existiert, und dann fortfahren und sie ausführen.

Wir hoffen, Sie haben gelernt, wie man Tabellen in PostgreSQL mit verschiedenen Optionen und Szenarien UMBENENNT. Bitte beachten Sie, dass in vielen Fällen verschiedene Varianten der RENAME-Anweisung funktionieren können.

Wenn Sie in einer Datenbank arbeiten, wissen Sie, welches SCHEMA referenziert wird, welches OBJEKT aufgerufen wird und wo es erforderlich ist, um Fehler zu vermeiden und zu verhindern. Wir hoffen, dass unsere Lösungen Ihnen helfen können, die verschiedenen Möglichkeiten zu verstehen, wie eine Tabelle umbenannt werden kann.

Bilal Shahid avatar Bilal Shahid avatar

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

Verwandter Artikel - PostgreSQL Table