Message posté par : Sébastien Morucci
----------------------------------------
Bonjour à tous,
J’ai essayé de trouver des réponses sur les forums et faire des tests sans succès donc je
m’en remets à vous. Pour le contexte, on organise des concours de pronostiques avec des
amis et cette année, je saute le pas de la base de données et du BI pour retranscrire les
résultats.
J’ai une version 11 de Postgresql et je cherche à créer une fonction Trigger qui me
permettra d’insérer, à chaque ajout de match dans la table top14, autant de lignes qu’il
y a de pronostiqueurs dans la table pronostics_matchs tout en intégrant les informations
de ces 2 tables.
J’ai une première table de pronostiqueurs :
-----------------
Code :
CREATE TABLE pronostiqueurs (
id_pronostiqueur varchar(20) NULL,
prenom varchar(50) NULL,
nom varchar(50) NULL
);
INSERT INTO pronostiqueurs
VALUES
('U1', 'Hendrix', 'Jimmy'),
('U2', 'Lennon', 'John'),
('U3', 'Dickinson', 'Bruce');
-----------------
Une seconde table de compétition Top14 (et ouais le monde de l'ovalie) :
-----------------
Code :
CREATE TABLE top14 (
id_match varchar(50),
competition varchar(30),
journee varchar(10),
num_match varchar(10),
equipe_dom varchar(30),
score_dom float8,
bonus_off_dom boolean,
equipe_ext varchar(30),
score_ext float8,
bonus_off_ext boolean,
date_match timestamp
);
-----------------
Une dernière table qui regroupe chacun des matchs dupliqués pour autant de pronostiqueurs
:
-----------------
Code :
CREATE TABLE pronostics_matchs (
id_prono varchar(50),
id_match varchar(50),
competition varchar(30),
journee varchar(10),
num_match varchar(10),
id_pronostiqueur varchar(30),
equipe_dom varchar(30),
score_dom float8,
bonus_dom boolean,
equipe_ext varchar(30),
score_ext float8,
bonus_ext boolean
);
-----------------
Voilà la fonction trigger qui semble marcher à moitié car elle ne me renvoie qu’une seule
ligne entièrement remplie :
-----------------
Code :
CREATE OR REPLACE FUNCTION ajouter_matchspronos()
RETURNS trigger AS
$BODY$
DECLARE
prono_rec RECORD;
BEGIN
FOR prono_rec IN SELECT id_pronostiqueur from pronostiqueurs
LOOP
insert into pronostics_matchs
(id_match,competition,journee,num_match,id_parieur,equipe_dom,equipe_ext)
VALUES(new.id_match,new.competition,new.journee,new.num_match,
prono_rec.id_pronostiqueur, new.equipe_dom,new.equipe_ext);
return NEW;
END LOOP;
END;
$BODY$
LANGUAGE plpgsql;
DROP TRIGGER ajouter_matchspronos ON top14;
CREATE TRIGGER ajouter_matchspronos AFTER INSERT
ON top14 FOR EACH ROW
EXECUTE PROCEDURE ajouter_matchspronos();
-----------------
Tentative d’insertion qui doit (théoriquement) venir alimenter la table pronostics_matchs
en y intégrant les pronostiqueurs
insert into top14
-----------------
Code :
(competition,journee,num_match,equipe_dom,equipe_ext,date_match) values
('TOP14','J1','M1','RCT','ASM','2022-09-18
20:45:00')
-----------------
En vous remerciant grandement par avance pour vos lumières. Si vous souhaitez des
précisions, je suis à votre service.
Bonne soirée
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=354707#p354707
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net