1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| CREATE OR REPLACE FUNCTION distribuer_mise () RETURNS TRIGGER AS '
DECLARE
cursmise refcursor;
iduti "public"."miser"."id_utilisateur"%TYPE;
idmatch "public"."miser"."id_match"%TYPE;
idjoueur "public"."miser"."id_joueur"%TYPE;
res "public"."jouer"."resultat"%TYPE;
mont "public"."miser"."montant_mise"%TYPE;
cot "public"."cote"."cote"%TYPE;
BEGIN
mont = 0;
cot = 0;
IF OLD.resultat IS NULL
THEN
IF NEW.resultat = TRUE
THEN
OPEN cursmise for
SELECT id_utilisateur, id_match, id_joueur, montant_mise FROM MISER WHERE id_match = NEW.id_match;
FETCH cursmise INTO iduti, idmatch, idjoueur, mont;
WHILE FOUND LOOP
SELECT cote INTO cot FROM COTE WHERE id_match = NEW.id_match AND id_joueur = NEW.id_joueur;
IF idjoueur = NEW.id_joueur
THEN
UPDATE UTILISATEUR SET montant_euro_utilisateur = montant_euro_utilisateur + ( mont * ( 1 + ( 1 - cot / 100 ) ) ) WHERE id_utilisateur = iduti;
END IF;
FETCH cursmise INTO iduti, idmatch, idjoueur, mont;
END LOOP;
END IF;
ELSE
RAISE EXCEPTION ''Match déja cloturé'';
END IF;
RETURN NEW;
END;
' LANGUAGE 'plpgsql'; |
Partager