Heim >Datenbank >MySQL-Tutorial >Wie kann ich Tabellennamen in PostgreSQL dynamisch generieren?

Wie kann ich Tabellennamen in PostgreSQL dynamisch generieren?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-30 15:46:09399Durchsuche

How Can I Dynamically Generate Table Names in PostgreSQL?

Dynamisches Generieren von Tabellennamen in PostgreSQL

In SQL wird dynamisches SQL nicht unterstützt, außer in der PL/PgSQL-Variante, die dynamische Abfragen erstellen kann. Um das Ergebnis einer Abfrage als Tabellennamen in einer anderen Abfrage zu verwenden, können Sie die PL/PgSQL-EXECUTE-Anweisung verwenden.

Hier ist ein Beispiel:

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

Der %I-Formatbezeichner in Die Formatfunktion setzt Bezeichner, einschließlich Tabellennamen, ordnungsgemäß in Anführungszeichen, sodass keine expliziten Anführungszeichen mit quote_ident erforderlich sind.

Um SQL-Injection-Schwachstellen zu vermeiden, sollten Sie dies in Betracht ziehen Verwendung der EXECUTE ... USING-Anweisung für Literale anstelle von format(...) mit %L. Für Bezeichner wie Tabellen-/Spaltennamen bleibt die Prägnanz des %I-Musters eine nützliche Alternative zu quote_ident.

Das obige ist der detaillierte Inhalt vonWie kann ich Tabellennamen in PostgreSQL dynamisch generieren?. 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