Uw functie kan er in Postgres 9.0 of later als volgt uitzien:
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;
Over RETURN NULL
:
- Het resultaat negeren in BEFORE TRIGGER van PostgreSQL?
Ik zou adviseren om geen combinatie-ID's te gebruiken. Met format( .. %I ..)
of quote_ident()
, krijgt u een tabel met de naam "dummyTest"
, die u voor de rest van zijn bestaan dubbel moet citeren. Gerelateerd:
- Zijn PostgreSQL-kolomnamen hoofdlettergevoelig?
Gebruik in plaats daarvan kleine letters:
quote_ident('dummytest')
Het heeft echt geen zin om dynamische SQL te gebruiken met EXECUTE
zolang je een statische tabelnaam hebt. Maar dat is waarschijnlijk slechts het vereenvoudigde voorbeeld?