|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juin 2006 Messages : 7 ![]() |
Bonjour,
Je commence avec postgresql. J'ai fais une base avec des tables commandes et produits et une table de liaison. Je voudrais faire un trigger qui lors d'un delete sur la table produit verifie s'il y a une commande en cours pour ce produit si oui on annule le delete sinon on fait bien le delete. tres simple pour apprendre, je sais que je ferais cela avec une clef etrangere bien sur merci beaucoup |
|
|
00
|
|
|
#2 |
|
Invité de passage
![]() Inscription : juin 2006 Messages : 7 ![]() |
Voici la fonction que j'ai faite et es question que je me pose :
DECLARE BEGIN SELECT cp_co_id FROM commandes_produits WHERE cp_p_id=1; RETURN OLD; IF NOT FOUND THEN DELETE FROM commandes WHERE co_id=cp_co_id; END IF; END; - deja avec ceci j'ai un message d'erreur : 'select query has no destination for result' -> que faire ? - j'ai besoin que le select renvoi l'id de la commande s'il existe (cp_co_id) - ensuite il faut que je remplace cp_p_id=1 par cp_p_id = id du produit en cours (sur lequel est appliqué le trigger) je ne sais pas comment. merci beaucoup |
|
|
00
|
|
|
#3 | |||||
![]() Inscription : juillet 2002 Messages : 537 ![]() |
Salut !
Citation:
Par exemple : Code :
Citation:
Pas de RETURN dans les procédures ;-) C'est uniquement pour les fonctions. Citation:
N'oublie pas de regarder dans la doc officielle si tu débutes en PL/pgSQL : http://www.postgresql.org/docs/8.1/i...ogramming.html Bonne continuation |
|||||
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : juin 2006 Messages : 7 ![]() |
Merci Beaucoup pour toutes ces explications
|
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : juin 2006 Messages : 7 ![]() |
J'avance j'avance
Alors mon select peut me renvoyer plusieurs resultats je fais donc DECLARE myrec record; BEGIN FOR myrec IN SELECT cp_co_id INTO produit_verif FROM commandes_produits WHERE cp_p_id=$1 LOOP IF NOT FOUND THEN DELETE FROM commandes WHERE co_id = (SELECT cp_co_id FROM produit_verif); ELSE RETURN NULL; END IF; END LOOP; END; Et j'ai le message d'erreur : Cannot open SELECT INto query as Cursor merci d'avance |
|
|
00
|
|
|
#6 |
|
Membre chevronné
![]() Inscription : février 2003 Messages : 643 ![]() |
à tester, mais le INTO produit_verif ne sert à rien dans la requête SELECT sur laquelle tu boucles, puisque les données sont contenues dans myrec...
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com