Möchte ich ausführen von externen Programm (wie .net c# Konsole), wenn der PostgreSQL-trigger ausgelöst wird. Wie kann ich es erreichen?
- Warum war meine Frage gewählt? irgendeinen Grund?
- Natürlich habe ich die Suche-Lösung. Ich kann immer noch nicht finden, eine bessere und schnellere Lösung. Eine alternative Lösung ist ok.
Postgres normalerweise nicht ausführen externer Programme aus Gründen der Sicherheit.
Die typische Lösung ist zu verwenden
BENACHRICHTIGEN
und einen daemonLISTEN
zu. Es gibt Lösungen für jede bedeutende scripting Sprache gibt ...Beispiele für Java von @Craig: Gewusst wie: aktualisieren Sie JPA-Entitäten, die als backend-Datenbank änderungen asynchron?
Jeweiligen Handbuch-Seite für PHP.
Da Postgres 9.3 gibt es eine Lösung für das aufrufen der externen Programme. Es ist aus Sicherheitsgründen begrenzt, um Superuser und IMHO bestimmt für den Export von Daten, anstatt eine "Benachrichtigung auf trigger":
Wenn Sie wollen, um tatsächlich exportieren von Daten in das aufgerufene programm können Sie einen beliebigen AUSWÄHLEN oder den Namen einer Tabelle statt WÄHLEN Sie 1,. Die Ergebnisse der Abfrage werden dann an das aufgerufene Programm übergeben, die über seine Standardeingabe.
Finden Sie die Dokumentation der Funktion in der Postgres-docs:
http://www.postgresql.org/docs/9.3/static/sql-copy.html
/bin/touch
und/tmp/created_by_postgres
? Denken Sie, dass dies funktionieren würde, um die Ausführung einer externen python oder shell-Skript aus?PROGRAM
können tatsächlich ausführen beliebiger shell-Befehl... Würden Sie geschehen, zu wissen, wenn es einen handshake zwischen den postgres-Funktion, Ausführung derCOPY
Methode und der shell-Befehl ausgeführt, indemPROGRAM
? Bedeutung der postgres-Funktion würde warten, bis der shell-Befehl abgeschlossen ist, bevor Sie zu Ihrer nächsten Aufgabe.