sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL-utlösare för att generera koder för flera tabeller dynamiskt

Jag skulle vara ganska entusiastisk över att bli visad fel (jag behöver det här själv också ibland), men bäst jag vet är att referera kolumnnamn med variabler ett av de fall där du faktiskt behöver använda PL/C-utlösare snarare än PL/ PgSQL-utlösare. Du hittar exempel på sådana triggers i contrib/spi och på PGXN.

Alternativt kan du namnge dina kolumner konsekvent för att kunna referera till dem direkt, t.ex. NEW.tenant_code .

Personligen slutar jag vanligtvis med att skriva en funktion som skapar triggern:

create function create_tg_stuff(_table regclass, _args[] text[])
  returns void as $$
begin
  -- explore pg_catalog a bit
  execute $x$
  create function $x$ || quote_ident(_table || '_tg_stuff') || $x$()
    returns trigger as $t$
  begin
    -- more stuff
    return new;
  end;
  $t$ language plpgsql;
  $x$;
end;
$$ language plpgsql;


  1. SQLite Beskriv tabell

  2. Konvertera varchar-kolumn till datum i mysql på databasnivå

  3. SQL-fel:'database.table.field finns inte i GROUP BY

  4. kombinera två välj uttalande i två kolumner?