Vous pouvez trouver un exemple de création d'un déclencheur avec SQL dynamique à l'aide de PL/PgSQL dans le Déclencheur d'audit exemple pour PostgreSQL. La même approche fonctionnera avec n'importe quel autre DDL.
Voir la fonction audit.audit_table
et utilisation du format
et EXECUTE
là.
Cela dit, avoir besoin de créer des tables de manière procédurale peut être (mais n'est pas toujours) un signe de conception de schéma douteuse.
Exemple simple de SQL dynamique créant une table :
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;
La même approche fonctionne pour la création de déclencheurs, etc.