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

изпълнете външна програма с тригер в postgres 9.4

Отказ от отговорност: Работя с Андреас Фрич по същия проект.

Решихме този проблем по следния начин.

Има разширение "Language" PL/sh процедурен езиков манипулатор за PostgreSQL кодиран от Peter Eisentraut, който прави точно това, от което се нуждаем.

Вие дефинирате shell-скрипт по този начин:

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

Това е пример за тригерна функция с някои полезни променливи на средата за тригери:

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;

Създавате тригер преди вмъкване със следния SQL-изявление

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

Надявам се това да помогне на всеки друг, който търси подобно решение за своя проблем.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. EXECUTE синтактична грешка в postgresql

  2. Какъв е най-добрият начин да копирате подмножество от редове на таблица от една база данни в друга в Postgres?

  3. Сортирайте текстов агрегат, създаден с array_agg в postgresql

  4. Как да заявите стойности със заместващи знаци в PostgreSQL hstore

  5. Проблем със сокет на PostgreSQL Mountain Lion