sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL 9.3-triggerfunctie om in tabel met geparametreerde naam in te voegen

CREATE FUNCTION log_roll_test()
  RETURNS trigger AS
$func$
BEGIN
   EXECUTE format('INSERT INTO %I SELECT ($1).*'
                , to_char(NEW.updt_ts, '"log"WW'))   -- child table name
   USING NEW;
   RETURN NULL;
END
$func$ LANGUAGE plpgsql;

U kunt niet verwijzen naar NEW binnen de queryreeks. NEW is zichtbaar in de hoofdtekst van de functie, maar niet in EXECUTE omgeving. De beste oplossing is om de waarden door te geven in de USING clausule.

Ik heb ook het equivalent vervangen door to_char(NEW.updt_ts, '"log"WW') voor de tabelnaam. to_char() is hier sneller en eenvoudiger.




  1. Hoe de OCTET_LENGTH()-functie werkt in MySQL

  2. PostgreSQL op Corda enterprise node genereert relatiefouten

  3. Hoe u SQL Server-gegevens van een tabel naar een CSV-bestand exporteert?

  4. Geneste tabel primaire en externe sleutel in Oracle