Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/06/2007, 13h46   #1
Invité de passage
 
Inscription : avril 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 6
Points : 2
Points : 2
Par défaut Contexte de retour d'un trigger

Bonjour,

Je suis confronté au problème suivant :
depuis un script PHP je procède à des INSERT dans une table acheteur :

try {

$sql = "INSERT INTO acheteur(cod_id,siret,raisonsoc,typo,adresse,comptable,url)"
." values(:cod_id,:siret,:raisonsoc,:typo,:adresse,:comptable,:url)";

$stmt= $dbh->prepare($sql);
$stmt->BindParam(':cod_id',$tab[1]);
$stmt->BindParam(':siret',$tab[2]);
$stmt->BindParam(':raisonsoc',$tab[4]);
$stmt->BindParam(':typo',$tab[5]);
$stmt->BindParam(':adresse',$tab[6]);
$stmt->BindParam(':comptable',$tab[7]);
$stmt->BindParam(':url',$tab[12]);

$stmt->execute();
$stmt->closeCursor();
...


Côté base de données, j'ai créé un trigger afin d'actualiser un champ de la table prereg (suite à l'ajout d'un enregistrement dans la table acheteur) :


create trigger inactiverPrereg
after insert on acheteur
for each row execute procedure inactiverPrereg();

et la fonction :

create or replace function inactiverPrereg() returns trigger as '
declare
inscrits_cursor cursor for select email from prereg,acheteur where acheteur.siret=prereg.siret and prereg.actif=true;
email prereg.email%TYPE;
begin
open inscrits_cursor;
loop
fetch inscrits_cursor into email;
EXIT WHEN NOT FOUND;
update prereg set actif=false where prereg.email=email;
end loop;
close inscrits_cursor;
end;
' language 'plpgsql';


Lorsque je lance mes insertions via le client PHP, j'obtiens le résultat suivant :


SQLSTATE[2F005]: Function executed no return statement: 7 ERROR: control reached end of trigger procedure without RETURN CONTEXT: PL/pgSQL function "inactiverprereg"


Je précise que les insertions dans la table acheteur fonctionnent quand je supprime le trigger...

Si quelqu'un est en mesure de m'expliquer ce qui cloche, je le bénis d'avance :-)

Patrick Charda
patrickcharda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2007, 20h27   #2
Invité de passage
 
Inscription : avril 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 6
Points : 2
Points : 2
create or replace function inactiverPrereg() returns trigger as '
...
...
close inscrits_cursor;
return null;
end;
' language 'plpgsql';

patrickcharda est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h19.


 
 
 
 
Partenaires

Hébergement Web