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

Функция за задействане на PostgreSQL 9.3 за вмъкване в таблица с параметризирано име

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;

Не можете да посочите NEW вътре в низа на заявката. NEW се вижда в тялото на функцията, но не и в EXECUTE околен свят. Най-доброто решение е да подадете стойностите в USING клауза.

Също така заместих еквивалентния to_char(NEW.updt_ts, '"log"WW') за името на таблицата. to_char() тук е по-бързо и по-лесно.




  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

  2. Верижното присъединяване не се филтрира според очакванията

  3. GroupingError:ERROR:колоната трябва да се появи в клаузата GROUP BY или да се използва в агрегатна функция

  4. RETURNING причинява грешка:липсващ запис от клауза FROM за таблица

  5. Проблем с разрешение с PostgreSQL в докер контейнер