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

Sådan bruges EXECUTE FORMAT ... BRUG i postgres-funktionen

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?



  1. Er det muligt at forespørge i en kommasepareret kolonne for en bestemt værdi?

  2. Sådan sorteres rækker af HTML-tabel, der kaldes fra MySQL

  3. java.lang.ClassNotFoundException:org.postgresql.Driver

  4. Oracle, PDO_OCI vs OCI8