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
>
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 |