Re: tiggers

From: "Italo Osorio" <italo(at)aiias(dot)edu>
To: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: tiggers
Date: 2004-04-22 23:18:07
Message-ID: 001801c428c0$11f865a0$8400a8c0@italopc
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hello, esto es con respecto a correr aplicaciones externas o Shell Commands.

La solucion que estoy usando es la siguiente (esta bajo linux)

1. Creo la funcion C, este es un ejemplo chiquito.

#include <string.h>
#include "postgres.h"

text * run(text *t){
system( VARDATA(t) );
return t;
}

2. Compilo el programa como Libreria Dinamica.

cc -fpic -c run.c -I/usr/src/postgresql-7.4/src/include
cc -shared -o run.so run.o

3. Luego lo grabo dentro del directorio de postgres y en postgres ejecuto lo
siguiente.

CREATE FUNCTION run(varchar) RETURNS varchar
AS '/usr/local/pgsql/otros/run.so' LANGUAGE C
WITH (isStrict);

4. para usar solo tienen que hacer lo siguiente por ejemplo

select run('cp /etc/fstab /home/user');

Tamien pudes incluir esta linea dentro de un trigger.

Con eso puedes ejecutar cualquier comando, si creas un .sh tambien se
ejectura. Solo hay que recordar que lo que se ejectuta correra bajo el
usuario Postgres con sus limitaciones y ventajas tambien.

Este ejemplo es basico, con conocimientos de C es posible darle un poco mas
de complejidad.

---------------

Italo Osorio
Adventist International Institute of Advanced Studies

"La mediocridad comienza cuando para los problemas de hoy usamos soluciones
de ayer"
A.Einsten.

----- Original Message -----
From: "Alvaro Herrera" <alvherre(at)dcc(dot)uchile(dot)cl>
To: "Edwin Quijada" <listas_quijada(at)hotmail(dot)com>
Cc: <adminserver(at)uft(dot)edu(dot)ve>; <pgsql-es-ayuda(at)postgresql(dot)org>
Sent: Friday, April 23, 2004 4:17 AM
Subject: Re: [pgsql-es-ayuda] tiggers

> On Thu, Apr 22, 2004 at 01:49:47PM +0000, Edwin Quijada wrote:
> >
> > Sip
>
> La verdad es que no se pueden hacer triggers con PL/Perl.
>
> > >From: adminserver(at)uft(dot)edu(dot)ve
> > >
> > >OK, entonces si yo tengo un script en sh o cualquier otro lenguaje,
> > >con PL/PERL puedo hacer un trigger que mande a ejecutar ese script?,
> > >supongo que es usando system()
>
> --
> Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
> "I would rather have GNU than GNOT." (ccchips, lwn.net/Articles/37595/)
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: No hagas 'kill -9' a postmaster
>

In response to

  • Re: tiggers at 2004-04-22 20:17:19 from Alvaro Herrera

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera Munoz 2004-04-22 23:23:57 Re: tiggers
Previous Message Juan Carlos Mendoza 2004-04-22 22:31:23 Re: tiggers