[MYSQL] Trigger sur Ajout
aliasing
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
Le marocain -
Le marocain -
Bonjour à tous !
J'utilise MYSQL 5.0.37 et phpmyadmin 2.10.1.
Voila mon problème, je souhaite créer un TRIGGER, qui quand je rajouterais un nouveau patient, me signale par un message ou une erreur que ce patient est déjà présent dans ma base.
Pour se faire, j'ai une table PATIENT avec code_patient et nom.
Mon trigger :
DELIMITER $$
CREATE TRIGGER T_B_I_PATIENT BEFORE INSERT ON PATIENT
FOR EACH ROW
DECLARE v_nbpatient number;
BEGIN
SELECT COUNT(code_p) into v_nbpatient from PATIENT WHERE PATIENT.nom=:NEW.nom;
if (v_nbpatient>1) THEN
RAISE_APPLICATION_ERROR(-20002,'Patient déjà présent dans la base');
end if;
end$$
L'erreur qui m'est affiché :
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER $$
CREATE TRIGGER T_B_I_PATIENT BEFORE INSERT ON PATIENT
FOR EACH ' at line 1
Merci de votre aide.
J'utilise MYSQL 5.0.37 et phpmyadmin 2.10.1.
Voila mon problème, je souhaite créer un TRIGGER, qui quand je rajouterais un nouveau patient, me signale par un message ou une erreur que ce patient est déjà présent dans ma base.
Pour se faire, j'ai une table PATIENT avec code_patient et nom.
Mon trigger :
DELIMITER $$
CREATE TRIGGER T_B_I_PATIENT BEFORE INSERT ON PATIENT
FOR EACH ROW
DECLARE v_nbpatient number;
BEGIN
SELECT COUNT(code_p) into v_nbpatient from PATIENT WHERE PATIENT.nom=:NEW.nom;
if (v_nbpatient>1) THEN
RAISE_APPLICATION_ERROR(-20002,'Patient déjà présent dans la base');
end if;
end$$
L'erreur qui m'est affiché :
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER $$
CREATE TRIGGER T_B_I_PATIENT BEFORE INSERT ON PATIENT
FOR EACH ' at line 1
Merci de votre aide.
A voir également:
- [MYSQL] Trigger sur Ajout
- Demande d'ajout snap qui disparait ✓ - Forum Snapchat
- Comment enlever la limite d'ajout sur snapchat - Forum Snapchat
- Ajout rapide snap - Forum Snapchat
- Mysql community server - Télécharger - Bases de données
- Ajout snap sans rien d'écrit - Forum Snapchat
3 réponses
Bonjour,
moi aussi j'avais un problème pour les trigger sous Mysql mais j'ai réussi "hamdolilah" à réalisé deux exemples qui marche, bien à vous ts.
voilà un 1er exemple :
delimiter //
CREATE TRIGGER upd_check BEFORE UPDATE ON account
FOR EACH ROW
BEGIN
IF NEW.amount < 0 THEN
SET NEW.amount = 0;
ELSEIF NEW.amount > 100 THEN
SET NEW.amount = 100;
END IF;
END//
delimiter ;
2ème exemple :
drop trigger cont_depart_update;
DELIMITER //
CREATE TRIGGER cont_depart_update AFTER UPDATE ON tacheassigne
FOR EACH ROW
BEGIN
DECLARE idProjet varchar(20);
DECLARE moyenneAcompli varchar(5);
select p.idp into @idProjet
from projet p inner join tache t on p.idp = t.idp inner join tacheassigne ta on t.idtache = ta.idtache where ta.idta=New.idta;
select avg(ta.accompli) into @moyenneAcompli
from projet p inner join tache t on p.idp = t.idp inner join tacheassigne ta on t.idtache = ta.idtache where ta.idta in (select ta.idta from projet p inner join tache t on p.idp = t.idp inner join tacheassigne ta on t.idtache = ta.idtache where p.idp=@idProjet)
group by p.idp;
update projet set accompli=@moyenneAcompli where idp=@idProjet;
END//
delimiter;
/////////////////////////////////////////////////////////////////////////////////
RQ :
* en mysql c'est "NEW" c'est pas comme ORACLE ":NEW"
* utiliser les delimiter (existe aussi au niveau de la console de mysql)
* l'appel des varriables c'est avec "@" et non & comme ORACLE
/////////////////////////////////////////////////////////////////////////////////
moi aussi j'avais un problème pour les trigger sous Mysql mais j'ai réussi "hamdolilah" à réalisé deux exemples qui marche, bien à vous ts.
voilà un 1er exemple :
delimiter //
CREATE TRIGGER upd_check BEFORE UPDATE ON account
FOR EACH ROW
BEGIN
IF NEW.amount < 0 THEN
SET NEW.amount = 0;
ELSEIF NEW.amount > 100 THEN
SET NEW.amount = 100;
END IF;
END//
delimiter ;
2ème exemple :
drop trigger cont_depart_update;
DELIMITER //
CREATE TRIGGER cont_depart_update AFTER UPDATE ON tacheassigne
FOR EACH ROW
BEGIN
DECLARE idProjet varchar(20);
DECLARE moyenneAcompli varchar(5);
select p.idp into @idProjet
from projet p inner join tache t on p.idp = t.idp inner join tacheassigne ta on t.idtache = ta.idtache where ta.idta=New.idta;
select avg(ta.accompli) into @moyenneAcompli
from projet p inner join tache t on p.idp = t.idp inner join tacheassigne ta on t.idtache = ta.idtache where ta.idta in (select ta.idta from projet p inner join tache t on p.idp = t.idp inner join tacheassigne ta on t.idtache = ta.idtache where p.idp=@idProjet)
group by p.idp;
update projet set accompli=@moyenneAcompli where idp=@idProjet;
END//
delimiter;
/////////////////////////////////////////////////////////////////////////////////
RQ :
* en mysql c'est "NEW" c'est pas comme ORACLE ":NEW"
* utiliser les delimiter (existe aussi au niveau de la console de mysql)
* l'appel des varriables c'est avec "@" et non & comme ORACLE
/////////////////////////////////////////////////////////////////////////////////