Ajouter ou mettre à jour par trigger
Bonjour à tous,
Je suis en train de faire mon premier trigger et j'aurais besoin d'un coup de main. ;)
Le but de ce trigger et de contrôler avant insertion dans la table si un host existe (`depuis_la_station`) dans la table. Si cette host existe il faut mettre les deux autres champs à jours sinon rajouter la ligne entière.
Voilà ce que j'ai commencé à faire, mais je pense mélanger un peu les choses, surtout avec mon histoire de SELECT.
Code:
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
|
DELIMITER $$
DROP TRIGGER IF EXISTS `ocsweb`.`detectINSERT`$$
CREATE TRIGGER `ocsweb`.`detectINSERT` BEFORE INSERT on `ocsweb`.`BGInfoTable`
FOR EACH ROW
BEGIN
DECLARE host_ins tinytext;
DECLARE host_exist tinytext;
SET host_ins = new.depuis_la_station;
SET host_exist = SELECT `ocsweb`.`BGInfoTable`.`depuis_la_station`AS Stations FROM `ocsweb`.`BGInfoTable` WHERE `ocsweb`.`BGInfoTable`.`depuis_la_station`= host_ins;
IF host_ins=host_exist THEN
UPDATE `ocsweb`.`BGInfoTable` SET `Time_Stamp`=new.Time_Stamp, `User_Name`=new.User_Name WHERE `depuis_la_station`=host_exist;
ELSE
INSERT INTO `ocsweb`.`BGInfoTable`(`Time_Stamp`,`depuis_la_station`,`User_Name`) VALUES (new.Time_Stamp,new.depuis_la_station,new.User_Name);
END$$
DELIMITER ; |