PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wenden Sie eine einzelne Triggerprozedur auf viele verschiedene Tabellen an

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.