Su función podría verse así en Postgres 9.0 o posterior:
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;
Acerca de RETURN NULL
:
- ¿Ignorar el resultado ANTES DEL ACTIVACIÓN de PostgreSQL?
Aconsejaría no usar identificadores de mayúsculas y minúsculas. Con format( .. %I ..)
o quote_ident()
, obtendrías una tabla llamada "dummyTest"
, que tendrá que comillas dobles por el resto de su existencia. Relacionado:
- ¿Los nombres de las columnas de PostgreSQL distinguen entre mayúsculas y minúsculas?
Use minúsculas en su lugar:
quote_ident('dummytest')
Realmente no tiene sentido usar SQL dinámico con EXECUTE
siempre que tenga un nombre de tabla estático. ¿Pero ese es probablemente solo el ejemplo simplificado?