PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

9.4 पोस्टग्रेज में ट्रिगर के साथ बाहरी प्रोग्राम निष्पादित करें

अस्वीकरण: मैं उसी प्रोजेक्ट पर एंड्रियास फ्रित्श के साथ काम करता हूं।

हमने इस समस्या को निम्नलिखित तरीके से हल किया है।

एक "Language" -extension PostgreSQL के लिए PL/sh प्रक्रियात्मक भाषा हैंडलर है पीटर एसेंट्राउट द्वारा कोडित जो ठीक वही करता है जो हमें चाहिए।

आप एक शेल-स्क्रिप्ट को इस तरह परिभाषित करते हैं:

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. Postgres . में मान बढ़ाएँ

  2. PostgreSQL डेटाबेस में SQL डंप आयात करें

  3. PostgreSQL में साइन () फ़ंक्शन कैसे काम करता है

  4. आस्थगित, केस-असंवेदनशील अद्वितीय बाधा

  5. Psql का उपयोग करते समय पोस्टग्रेज में स्कीमा का चयन कैसे करें?