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

Как да използвате EXECUTE FORMAT ... ИЗПОЛЗВАНЕ във функцията postgres

Вашата функция може да изглежда така в Postgres 9.0 или по-нова версия:

CREATE OR REPLACE FUNCTION dummytest_insert_trigger()
  RETURNS trigger AS
$func$
DECLARE
   v_partition_name text := quote_ident('dummyTest');  -- assign at declaration
BEGIN
   IF NEW.datetime IS NOT NULL THEN
      EXECUTE 
      'INSERT INTO ' || v_partition_name || ' VALUES ($1,$2)'
      USING NEW.id, NEW.datetime;              
   END IF;                    

   RETURN NULL;  -- You sure about this?
END
$func$  LANGUAGE plpgsql;

Относно RETURN NULL :

  • Да игнорирате резултата в BEFORE TRIGGER на PostgreSQL?

Бих посъветвал да не използвате смесени идентификатори. С format( .. %I ..) или quote_ident() , ще получите таблица с име "dummyTest" , който ще трябва да цитирате двойно до края на съществуването му. Свързано:

  • Именната на колоните в PostgreSQL зависят ли от малките букви?

Вместо това използвайте малки букви:

quote_ident('dummytest')

Наистина няма смисъл да използвате динамичен SQL с EXECUTE стига да имате статично име на таблица. Но това вероятно е само опростения пример?



  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 Cloud Vendor Lock-in

  2. Най-добрите ETL инструменти за мигриране към PostgreSQL

  3. Как да направите резервно копие на функции само в Postgres

  4. Няма резултати, върнати от грешката на заявката в PostgreSQL

  5. Как да избера 1d масив от 2d масив?