La tua funzione potrebbe assomigliare a questa in Postgres 9.0 o versioni successive:
CREATE OR REPLACE FUNCTION dummytest_insert_trigger()
RETURNS trigger AS
$func$
DECLARE
v_partition_name text := quote_ident('dummyTest'); -- assign at declaration
BEGIN
IF NEW.datetime IS NOT NULL THEN
EXECUTE
'INSERT INTO ' || v_partition_name || ' VALUES ($1,$2)'
USING NEW.id, NEW.datetime;
END IF;
RETURN NULL; -- You sure about this?
END
$func$ LANGUAGE plpgsql;
Informazioni su RETURN NULL
:
- Per ignorare il risultato PRIMA DEL TRIGGER di PostgreSQL?
Consiglierei di non utilizzare identificatori di casi misti. Con format( .. %I ..)
o quote_ident()
, otterresti una tabella denominata "dummyTest"
, che dovrai citare due volte per il resto della sua esistenza. Correlati:
- I nomi delle colonne di PostgreSQL fanno distinzione tra maiuscole e minuscole?
Usa invece le minuscole:
quote_ident('dummytest')
Non ha davvero senso usare SQL dinamico con EXECUTE
purché tu abbia un nome di tabella statico. Ma questo è probabilmente solo l'esempio semplificato?