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

uruchom zewnętrzny program z wyzwalaczem w postgresie 9.4

Zastrzeżenie: Pracuję z Andreasem Fritschem nad tym samym projektem.

Rozwiązaliśmy ten problem w następujący sposób.

Istnieje rozszerzenie "Język" PL/sh Proceduralny Procedura Obsługi Języka dla PostgreSQL zakodowany przez Petera Eisentrauta, który robi dokładnie to, czego potrzebujemy.

Skrypt powłoki definiujesz w ten sposób:

CREATE or REPLACE FUNCTION test(text) RETURNS text AS '
#!/bin/bash
echo Test: $1 is working
' LANGUAGE plsh;

Oto przykład funkcji wyzwalacza z kilkoma użytecznymi zmiennymi środowiskowymi dla wyzwalaczy:

CREATE or REPLACE FUNCTION TriggerTest() RETURNS trigger AS $$
#!/bin/bash
#mkdir /has/triggertest/$PLSH_TG_NAME
cd /has/triggertest
touch PLSH_TG_NAME-$PLSH_TG_NAME
touch PLSH_TG_WHEN-$PLSH_TG_WHEN
touch PLSH_TG_LEVEL-$PLSH_TG_LEVEL
touch PLSH_TG_OP-$PLSH_TG_OP
touch PLSH_TG_TABLE_NAME-$PLSH_TG_TABLE_NAME
touch PLSH_TG_TABLE_SCHEMA-$PLSH_TG_TABLE_SCHEMA
touch new-$new.x
#touch "arg-0-'$0'"
touch "arg-1-'$1'"
touch "arg-2-'$2'"
touch "arg-3-'$3'"
touch "arg-4-'$4'"

for arg do
    touch "Arg is '$arg'"
done

exit 0
$$ LANGUAGE plsh;

Tworzysz wyzwalacz przed wstawieniem za pomocą następującej instrukcji SQL

CREATE TRIGGER tbefore BEFORE INSERT OR UPDATE OR DELETE ON ttest2
    FOR EACH ROW EXECUTE PROCEDURE TriggerTest(new);

Mam nadzieję, że pomoże to każdemu, kto szuka podobnego rozwiązania swojego problemu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Walidacja unikatowości w bazie danych, gdy walidacja ma warunek na innej tabeli

  2. Pamięć podręczna planu wykonania dla funkcji PL/pgSQL w PostgreSQL

  3. pg_dump:nieprawidłowa opcja -- i podczas migracji

  4. Indeks nie jest używany, gdy w postgresie jest używane LIMIT

  5. Zaktualizuj wiele kolumn w funkcji wyzwalacza w plpgsql