sql >> Database >  >> RDS >> PostgreSQL

EXECUTE FORMAT gebruiken ... GEBRUIKEN in de postgres-functie

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?



  1. Introductie van nieuwe functie:Always On-beschikbaarheidsgroep

  2. Rails-migratie:Bigint op PostgreSQL lijkt te falen?

  3. Gelijktijdige gebruikerssessies beperken voor een specifieke login in SQL Server

  4. Plezier met (columnstore) compressie op een hele grote tafel – deel 2