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

PostgreSQL 9.3 spouštěcí funkce pro vložení do tabulky s parametrizovaným názvem

CREATE FUNCTION log_roll_test()
  RETURNS trigger AS
$func$
BEGIN
   EXECUTE format('INSERT INTO %I SELECT ($1).*'
                , to_char(NEW.updt_ts, '"log"WW'))   -- child table name
   USING NEW;
   RETURN NULL;
END
$func$ LANGUAGE plpgsql;

Nemůžete odkazovat na NEW uvnitř řetězce dotazu. NEW je viditelný v těle funkce, ale ne v EXECUTE životní prostředí. Nejlepším řešením je předat hodnoty v USING doložka.

Také jsem nahradil ekvivalent to_char(NEW.updt_ts, '"log"WW') pro název tabulky. to_char() je zde rychlejší a jednodušší.




  1. Příliš mnoho automatických přírůstků s ON DUPLICATE KEY UPDATE

  2. Jak vložit / načíst soubor uložený jako BLOB v databázi MySQL pomocí pythonu

  3. Kde je my.cnf pro instalace homebrew mysql?

  4. Kumulativní součet hodnot po měsících, doplnění chybějících měsíců