sql >> Database >  >> RDS >> PostgreSQL

Hoe NIEUW.* door te geven aan UITVOEREN in de triggerfunctie

Het beste met de USING clausule van EXECUTE :

CREATE FUNCTION foo ()
  RETURNS trigger AS
$func$
BEGIN
  IF TG_OP = 'INSERT' THEN
     EXECUTE format('INSERT INTO %s SELECT $1.*'
                  , 'samples_' || left(NEW.md5, 2);
     USING NEW;
  END IF;
  RETURN NULL;
END
$func$ LANGUAGE plpgsql;

En EXECUTE vereist geen haakjes.
En u weet dat identifiers naar kleine letters worden gevouwen, tenzij ze waar nodig worden geciteerd (%I in plaats van %s in format() ).

Meer details:




  1. Wanneer probeert MySQL een index voor een kolom bij te werken?

  2. Hoe MySQL-query's te optimaliseren op basis van het EXPLAIN-plan?

  3. Hoe MySQL 8 op Ubuntu 20.04 LTS te installeren

  4. Buitenlandse sleutel naar samengestelde sleutel