PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

jalankan program eksternal dengan pemicu di postgres 9.4

Penafian: Saya bekerja dengan Andreas Fritsch pada proyek yang sama.

Kami telah memecahkan masalah ini dengan cara berikut.

Ada "Bahasa"-ekstensi PL/sh Pengendali Bahasa Prosedural untuk PostgreSQL dikodekan oleh Peter Eisentraut yang melakukan persis seperti yang kita butuhkan.

Anda mendefinisikan shell-script seperti ini:

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

Ini adalah contoh fungsi pemicu dengan beberapa variabel lingkungan yang berguna untuk pemicu:

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;

Anda membuat pemicu sebelum penyisipan dengan Pernyataan SQL berikut

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

Saya harap ini membantu siapa saja yang mencari solusi serupa untuk masalahnya.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mewakili Tanggal, Waktu, dan Interval di PostgreSQL

  2. pola migrasi data produksi dalam pengiriman berkelanjutan

  3. Gunakan di mana kueri dalam tipe data JSONB di Rails Postgres

  4. Bagaimana saya bisa mengimpor file JSON ke PostgreSQL?

  5. Bagaimana saya mendapatkan psycopg2 logging dari waktu eksekusi kueri?