Twoja funkcja może wyglądać tak w Postgresie 9.0 lub nowszym:
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;
O RETURN NULL
:
- Aby zignorować wynik w PRZED TRIGGER w PostgreSQL?
Radziłbym nie używać identyfikatorów mieszanych wielkości liter. Z format( .. %I ..)
lub quote_ident()
, otrzymasz tabelę o nazwie "dummyTest"
, które będziesz musiał cytować przez resztę jego istnienia. Powiązane:
- Czy w nazwach kolumn PostgreSQL jest rozróżniana wielkość liter?
Zamiast tego użyj małych liter:
quote_ident('dummytest')
Naprawdę nie ma sensu używać dynamicznego SQL z EXECUTE
o ile masz statyczną nazwę tabeli. Ale to prawdopodobnie tylko uproszczony przykład?