Michael Nolan wrote:
> On Thu, May 31, 2012 at 2:23 PM, Darren Duncan <darren@darrenduncan.net> wrote:
> Michael Nolan wrote:
>
> PL/pgSQL and PL/perlu are the only ones I use. I use PL/perlu
> primarily to launch shell scripts from triggers, for example to
> update an external website when a row in a table has been
> inserted, deleted or updated.
>
> There is also another way to do what you describe that might be more
> secure.
>
> Rather than having the DBMS launch shell scripts directly, instead
> use LISTEN/NOTIFY messaging, where the trigger posts a message, and
> you have an ordinary client script listening for them, and the
> client script launches the shell scripts when it gets a message.
>
> This way, you need a persistent client script, but you don't need to
> invoke the shell in the DBMS ... or use the untrusted version of
> PL/Perl if that's all it was for.
>
> Anybody have examples of a persistent client script?
Not a whole one. But you can make a simple daemon in Perl, either by hand or
using some CPAN module.
The Postgres-related part though, see
http://search.cpan.org/dist/DBD-Pg/Pg.pm#pg_notifies for how the client script
talks to Postgres for this message passing.
Hopefully that'll answer the more interesting part for you.
-- Darren Duncan