sql >> Databasteknik >  >> RDS >> PostgreSQL

Använd en enda triggerprocedur på många olika tabeller

Du kan hitta ett exempel på att skapa en trigger med dynamisk SQL med PL/PgSQL i Audit Trigger exempel för PostgreSQL. Samma tillvägagångssätt fungerar med alla andra DDL.

Se funktionen audit.audit_table och användning av format och EXECUTE där.

Som sagt, att behöva skapa tabeller procedurmässigt kan vara (men är inte alltid) ett tecken på tveksam schemadesign.

Enkelt exempel på att dynamisk SQL skapar en tabell:

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;

Samma tillvägagångssätt fungerar för att skapa trigger etc.



  1. Hur man villkorligt UPPDATERA/INSERT efter DELETE som inte hittar rader?

  2. Oracle och programmering

  3. Python pandas to_sql 'lägg till'

  4. fel:Installationsskriptet avslutades med fel:kommandot 'gcc' misslyckades med utgångsstatus 1