sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL-trigger om dynamisch codes voor meerdere tabellen te genereren

Ik zou heel enthousiast zijn als ik het fout zou zien (ik heb dit zelf ook af en toe nodig), maar het beste wat ik weet, is dat het verwijzen van kolomnamen met behulp van variabelen een van die gevallen is waarin je eigenlijk PL/C-triggers moet gebruiken in plaats van PL/ PgSQL-triggers. Voorbeelden van dergelijke triggers vindt u in contrib/spi en op PGXN.

U kunt uw kolommen ook consequent een naam geven, zodat u er direct naar kunt verwijzen, b.v. NEW.tenant_code .

Persoonlijk schrijf ik over het algemeen een functie die de trigger creëert:

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. SQL:tel alle records met opeenvolgend optreden van dezelfde waarde voor elke apparaatset en retourneer het hoogste aantal

  2. Rails 4:Het gebruik van de PostgreSQL-functie op volgorde veroorzaakt een fout in de query omdat de include-tabel niet wordt samengevoegd

  3. Parseerfout:syntaxisfout, onverwachte 'mysql_query' (T_STRING) in

  4. CodeIgniter - Groepeer bij bestelling door niet te werken zoals verwacht