sql >> Databáze >  >> RDS >> PostgreSQL

PostgreSQL spoušť pro dynamické generování kódů pro více tabulek

Byl bych docela nadšený, kdyby se mi zobrazily špatně (sám to občas potřebuji), ale nejlépe vím, že odkazování názvů sloupců pomocí proměnných je jedním z těch případů, kdy ve skutečnosti potřebujete použít spouštěče PL/C spíše než PL/ Spouštěče PgSQL. Příklady takových spouštěčů najdete v contrib/spi a na PGXN.

Případně pojmenujte své sloupce konzistentně, abyste na ně mohli přímo odkazovat, např. NEW.tenant_code .

Osobně obecně končím psaním funkce, která vytvoří spouštěč:

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. Aktualizujte tabulku MySQL po částech

  2. Paralelní prováděcí plány – větve a vlákna

  3. Existuje nějaký způsob, jak urychlit následující vložky?

  4. Jak navrhnout MySql tabulku pro Tag Cloud?