PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come usare ESEGUI FORMATO ... USANDO nella funzione postgres

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?