Nejlépe pomocí USING
klauzule EXECUTE
:
CREATE FUNCTION foo ()
RETURNS trigger AS
$func$
BEGIN
IF TG_OP = 'INSERT' THEN
EXECUTE format('INSERT INTO %s SELECT $1.*'
, 'samples_' || left(NEW.md5, 2);
USING NEW;
END IF;
RETURN NULL;
END
$func$ LANGUAGE plpgsql;
A EXECUTE
nevyžaduje závorky.
A jste si vědomi toho, že identifikátory jsou složeny na malá písmena, pokud nejsou uvedeny v uvozovkách (%I
místo %s
ve format()
).
Další podrobnosti:
- INSERT s název dynamické tabulky ve funkci spouštění
- Jak dynamicky používat TG_TABLE_NAME v PostgreSQL 8.2?