PDA

View Full Version : [POSTGRESQL/TRIGGER] guida pratica


pumapc
08-11-2007, 11:18
Salve a tutti, questo è il mio primo post che scrivo, spero di essere nella sezione giusta e di non aver sbagliato nulla :)

Come da titolo vorrei sapere se è disponibile qualche guida o qualche link che conoscete (meglio in italiano..ehehe :D ) che mi aiuta a sviluppare trigger per controllare dei vincoli sulla base di dati sviluppata in postgresql

Inoltre vorrei sapere se i trigger possono essere interfacciati anche con php oppure se sono delle funzioni assestanti che fa in automatico il database

Grazie mille per l'attenzione!

vizzz
08-11-2007, 12:18
Salve a tutti, questo è il mio primo post che scrivo, spero di essere nella sezione giusta e di non aver sbagliato nulla :)

Come da titolo vorrei sapere se è disponibile qualche guida o qualche link che conoscete (meglio in italiano..ehehe :D ) che mi aiuta a sviluppare trigger per controllare dei vincoli sulla base di dati sviluppata in postgresql

Inoltre vorrei sapere se i trigger possono essere interfacciati anche con php oppure se sono delle funzioni assestanti che fa in automatico il database

Grazie mille per l'attenzione!

sono funzioni interne al database, la migliore guida credo sia quella del sito ufficiale...ma non so se è mai stata tradotta.

pumapc
09-11-2007, 07:41
ah ho capito!

Ma per far partire un trigger devo creare una funzione trigger giusto?

vizzz
09-11-2007, 12:14
ah ho capito!

Ma per far partire un trigger devo creare una funzione trigger giusto?

questa è una funzione di trigger (scritta in perl, ma il ragionamento è sempre lo stesso):
CREATE OR REPLACE FUNCTION test_trigger() RETURNS "trigger" AS
$BODY$
if ($_TD->{event} eq "INSERT")
{
$_TD->{new}{stringa} .= "(trig: insert)";
return "MODIFY";
}
elsif ($_TD->{event} eq "UPDATE")
{
$_TD->{new}{stringa} .= "(trig: modify)";
return "MODIFY";
}
else
{
return "SKIP";
}
$BODY$
LANGUAGE 'plperl' VOLATILE;
ALTER FUNCTION test_trigger() OWNER TO postgres;

di per sè una funzione di trigger non fa niente, perchè deve essere scatenata da un evento:


CREATE TRIGGER trig_test
BEFORE INSERT OR UPDATE
ON tab_prova
FOR EACH ROW
EXECUTE PROCEDURE test_trigger();

questa è l'assegnazione alla tabella tab_prova della funzione di trigger nel caso si verifichino due tipi di query: INSERT o UPDATE.
se hai domande o perplessità chiedi pure.

stevenen
09-11-2007, 16:14
Salve a tutti, questo è il mio primo post che scrivo, spero di essere nella sezione giusta e di non aver sbagliato nulla :)

Come da titolo vorrei sapere se è disponibile qualche guida o qualche link che conoscete (meglio in italiano..ehehe :D ) che mi aiuta a sviluppare trigger per controllare dei vincoli sulla base di dati sviluppata in postgresql

Inoltre vorrei sapere se i trigger possono essere interfacciati anche con php oppure se sono delle funzioni assestanti che fa in automatico il database

Grazie mille per l'attenzione!

se ti può interessare dovrei avere un manualino in italiano per il linguaggio plpgsql...