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

Sådan sender du NEW.* til EXECUTE i triggerfunktionen

Bedst med USING klausul af 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;

Og EXECUTE kræver ikke parenteser.
Og du er klar over, at identifikatorer foldes med små bogstaver, medmindre de citeres, hvor det er nødvendigt (%I i stedet for %s i format() ).

Flere detaljer:




  1. INDLÆS DATAINFIL i PHPmyadmin

  2. Data tutorial:Brug af vinduesfunktioner

  3. Find ud af hvilket operativsystem SQL Server kører på (T-SQL eksempel)

  4. Stjerneskemaet