Ein Beispiel zum Erstellen eines Triggers mit dynamischem SQL unter Verwendung von PL/PgSQL finden Sie im Audit-Trigger Beispiel für PostgreSQL. Derselbe Ansatz funktioniert mit jeder anderen DDL.
Siehe die Funktion audit.audit_table
und Verwendung von format
und EXECUTE
dort.
Allerdings kann die Notwendigkeit, Tabellen prozedural zu erstellen, ein Zeichen für fragwürdiges Schema-Design sein (ist es aber nicht immer).
Einfaches Beispiel für dynamisches SQL, das eine Tabelle erstellt:
CREATE OR REPLACE FUNCTION demo_dynamic_table(tablename text) RETURNS void AS $$
BEGIN
EXECUTE format('CREATE TABLE %I (id serial primary key);', tablename);
END;
$$ LANGUAGE plpgsql;
Derselbe Ansatz funktioniert für die Triggererstellung usw.