PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Appliquer une seule procédure de déclenchement à plusieurs tables différentes

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.