Posso eseguire una chiamata Curl da Postgres grilletto
-
28-09-2019 - |
Domanda
devo creare una chiamata processo su un campo di db (s) essendo un certo status. Ho sentito è possibile eseguire una chiamata CURL con un trigger db, ma Google non è di essere così gentile da qualche cosa di ritorno posso usare.
Quindi credo che la mia domanda è di tre parti:
- Può questo essere fatto?
- Riferimento?
- soluzione alternativa?
Flusso di lavoro:
campo db viene aggiornato con lo stato, necessità di kick off script / richiesta / processo che esegue il passo successivo nel mio flusso di lavoro (Questo è uno script PHP) che tirerà l'ha registrato nel db ed elaborare un altro passo, poi l'aggiornamento il db con i risultati.
Soluzione
Non dovrebbe utilizzare i trigger per questo, come blocchi di innesco transazioni in modo che renda la vostra base di dati molto lenta. Inoltre si avrebbe bisogno di installare il linguaggio pericoloso Postgres -. Pl / sh, pl / perl, pl / pitone o altro
Ci sono 2 soluzioni migliori per questo problema:
-
avere un processo che si connette al database e LISTEN s per notificano eventi generati dal il trigger - questa volontà lavoro immediatamente;
-
controllare periodicamente la presenza di nuovi dati utilizzando, per esempio, uno script cron -. Questo dovrebbe funzionare con un ritardo
Altri suggerimenti
Se si può chiamare uno script di shell, http://plsh.projects.postgresql.org/ è possibile chiamare un ricciolo.
Ma ho una sensazione inquietante circa l'approccio ...
- Se il server remoto va offline, incongruenza dei dati ??
Alternativa:
-
Non vorrei mettere la logica di business nei trigger, personalizzata solo vincoli o denormalizzazione.
-
Fai quello che devi fare con uno di livello intermedio o stored procedure.
Saluti, // t
Penso che quello che stai cercando è un trigger in postgres che verrà eseguito lo script necessery. I trigger sono spiegate in la documentazione , la sintassi per l'aggiunta di un nuovo trigger è href="http://www.postgresql.org/docs/8.1/interactive/sql-createtrigger.html" qui . Il tipo di trigger che stai cercando sembra essere un UPDATE grilletto dopo. Per quanto ne so, lo script si esegue dovrà verificare se il campo è dello stato richiesto, come Postgres sarà sempre eseguito il grilletto.