PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak używać EXECUTE FORMAT ... USING w funkcji postgres

Twoja funkcja może wyglądać tak w Postgresie 9.0 lub nowszym:

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;

O RETURN NULL :

  • Aby zignorować wynik w PRZED TRIGGER w PostgreSQL?

Radziłbym nie używać identyfikatorów mieszanych wielkości liter. Z format( .. %I ..) lub quote_ident() , otrzymasz tabelę o nazwie "dummyTest" , które będziesz musiał cytować przez resztę jego istnienia. Powiązane:

  • Czy w nazwach kolumn PostgreSQL jest rozróżniana wielkość liter?

Zamiast tego użyj małych liter:

quote_ident('dummytest')

Naprawdę nie ma sensu używać dynamicznego SQL z EXECUTE o ile masz statyczną nazwę tabeli. Ale to prawdopodobnie tylko uproszczony przykład?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobierz nazwę miesiąca z daty w PostgreSQL

  2. Usuwanie PostgreSQL z wewnętrznym sprzężeniem

  3. Zaawansowane dopasowywanie partycji do łączenia partycji

  4. Uzyskaj wartości z pierwszego i ostatniego wiersza na grupę

  5. Nie można odszyfrować za pomocą pgcrypto z AES-256-CBC, ale AES-128-CBC jest OK