Din funktion kunne se sådan ud i Postgres 9.0 eller nyere:
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;
Om RETURN NULL
:
- For at ignorere resultatet i FØR TRIGGER af PostgreSQL?
Jeg vil råde dig til ikke at bruge identifikatorer med blandede tilfælde. Med format( .. %I ..)
eller quote_ident()
, får du en tabel med navnet "dummyTest"
, som du bliver nødt til at citere for resten af dens eksistens. Relateret:
- Er PostgreSQL-kolonnenavne skelne mellem store og små bogstaver?
Brug små bogstaver i stedet:
quote_ident('dummytest')
Der er virkelig ingen mening i at bruge dynamisk SQL med EXECUTE
så længe du har et statisk tabelnavn. Men det er vel bare det forenklede eksempel?