PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Applicare una singola procedura di trigger a molte tabelle diverse

Puoi trovare un esempio di creazione di un trigger con SQL dinamico utilizzando PL/PgSQL in Trigger di controllo esempio per PostgreSQL. Lo stesso approccio funzionerà con qualsiasi altro DDL.

Vedi la funzione audit.audit_table e l'uso del format e EXECUTE lì.

Detto questo, la necessità di creare tabelle proceduralmente può essere (ma non è sempre) un segno di una progettazione di schemi discutibile.

Semplice esempio di SQL dinamico che crea una tabella:

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;

Lo stesso approccio funziona per la creazione di trigger, ecc.