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

PostgreSQL trigger til at generere koder til flere tabeller dynamisk

Jeg ville være ret begejstret for at blive vist forkert (det har jeg også lejlighedsvis selv brug for), men bedst jeg er klar over, at henvise kolonnenavne ved hjælp af variabler er et af de tilfælde, hvor du faktisk skal bruge PL/C-triggere frem for PL/ PgSQL-udløsere. Du finder eksempler på sådanne triggere i contrib/spi og på PGXN.

Alternativt kan du navngive dine kolonner konsekvent, så du kan referere dem direkte, f.eks. NEW.tenant_code .

Personligt ender jeg generelt med at skrive en funktion, der skaber triggeren:

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. Oracle ADF på JBoss:Wrapped Jdbc Connection problem

  2. Fejl i udviklingen på Heroku

  3. sql ::SQLString adfærd

  4. Opdater en kolonne med et ANTAL af andre felter er SQL?