Heim >Datenbank >MySQL-Tutorial >Wie verwende ich dynamische Werte als Tabellennamen in PostgreSQL?

Wie verwende ich dynamische Werte als Tabellennamen in PostgreSQL?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-27 06:02:14446Durchsuche

How to Use Dynamic Values as Table Names in PostgreSQL?

Verwenden dynamischer Werte als Tabellennamen in PostgreSQL

Beim Umgang mit Datenbankoperationen ist es oft notwendig, dynamische Werte als Tabellennamen zu verwenden. Dies kann durch dynamisches SQL erreicht werden, bei dem der Tabellenname während der Abfrageausführung ermittelt wird.

In PostgreSQL kann dynamisches SQL mithilfe der PL/PgSQL-EXECUTE-Anweisung innerhalb eines DO-Blocks oder einer PL/PgSQL-Funktion implementiert werden. Gewöhnliches SQL unterstützt kein dynamisches SQL.

Betrachten Sie beispielsweise das folgende Ziel: Verwenden des Ergebnisses einer Abfrage, um den Tabellennamen für eine nachfolgende Abfrage dynamisch zu bestimmen.

Abfrage an Ermitteln Sie den Tabellennamen:

SELECT 'backup_' || TO_CHAR(CURRENT_DATE,'yyyy-mm-dd')

Gewünschter Folgename Abfrage:

CREATE TABLE (SELECT 'backup_' || TO_CHAR(CURRENT_DATE,'yyyy-mm-dd')) AS * SELECT FROM backup

Lösung mit PL/PgSQL EXECUTE:

DO
$$
BEGIN
EXECUTE format('CREATE TABLE %I AS SELECT * FROM backup', 'backup_' || to_char(CURRENT_DATE,'yyyy-mm-dd'));
END;
$$
LANGUAGE plpgsql;

Erklärung:

Die Funktion format(...) wird zum Erstellen der dynamischen SQL-Anweisung verwendet. Der %I-Formatbezeichner gewährleistet die korrekte Anführungszeichen des Tabellen-/Spaltennamens.

Hinweis:

Für Literalwerte wird empfohlen, anstelle von EXECUTE ... USING zu verwenden format(...) mit %L. Für Bezeichner wie Tabellennamen ist das Format %I-Muster jedoch eine praktische Alternative zur Verwendung von quote_ident.

Das obige ist der detaillierte Inhalt vonWie verwende ich dynamische Werte als Tabellennamen in PostgreSQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn