PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да прехвърлите NEW.* към EXECUTE в тригерна функция

Най-добре с USING клауза на 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;

И EXECUTE не изисква скоби.
И вие знаете, че идентификаторите се сгъват в малки букви, освен ако не са цитирани, където е необходимо (%I вместо %s в format() ).

Повече подробности:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Функция PostgreSQL age():различни/неочаквани резултати при кацане в друг месец

  2. Knex.js принуждава повторно използване на сесията за 4 следващи заявки

  3. postgres в vagrant(ubuntu14.04)

  4. Режимът H2 postgresql изглежда не работи за мен

  5. psql фаталната роля не съществува