Heim >Datenbank >MySQL-Tutorial >Wie kann ich Tabellennamen in PostgreSQL dynamisch generieren?
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!