Rechercher : dans
Par :

[MYSQL] Trigger sur Ajout

Dernière réponse le 18 jui 2009 à 17:25:47 aliasing, le 11 jui 2007 à 11:23:17 
 Signaler ce message aux modérateurs

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.

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « [MYSQL] Trigger sur Ajout » dans :
Administration de MySQL Voir La base de données mysql Les Système de Gestion de Bases de Données tels que MySQL permettent de manipuler facilement et avec beaucoup de souplesse un très important volume de données. Toutefois, aussi robuste soit MySQL, il peut être intéressant...
Comment ajouter des gadgets à Windows 7 VoirDans Windows 7, la barre latérale qui contenait les gadgets sous Windows Vista a disparu. Cependant, les gadgets, eux, sont bel et bien restés. Il est très simple d'en ajouter des nouveaux. Commencez par effectuer un clic droit sur le bureau, puis...
Ajouter la langue arabe au clavier français sous Windows VoirPour ajouter le clavier en arabe sous Windows XP il suffit d'aller dans : Démarrer -> Panneau de configuration -> Options régionales et linguistiques Dans l'onglet "Langue" (ou Clavier et langues), cocher la case "Installer les fichiers pour les...
[Windows 2000] Affichage Ajout/suppression de programmes VoirUn beau jour, vous voulez désinstaller un programme mais la fenêtre Ajout/suppression de programmes n'affiche que du blanc et vous avez un message d'erreur du genre : Une erreur inattendue s'est produite Cet objet ne gère pas cette propriété ou...
SQL - Modification de table VoirModification de table Il est possible de supprimer une table grâce à la clause DROP, il existe aussi des commandes moins extrêmes permettant L'ajout de colonnes La modification de colonnes La suppression de colonnes Enfin, il est possible...
Importer et exporter des données sous MySQL VoirImportation et exportation Les Système de Gestion de Bases de Données tels que MySQL permettent de manipuler facilement et avec beaucoup de souplesse un très important volume de données. Toutefois, aussi robuste soit MySQL, il peut être intéressant...
MySQL - Installation sous Windows VoirPrésentation de MySQL MySQL est un Système de Gestion de Bases de Données (SGBD) fonctionnant sous Linux et Windows. Depuis la version 3.23.19, MySQL est sous Licence GPL (aussi bien sous Linux que Windows), ce qui signifie qu'il peut être utilisé...

1

Ptit_bouchon, le 8 jan 2008 à 14:39:30

Salut!

As tu trouvé la solution à ton pb?

J'ai exactement le même...

SVP. Merci d'avance.

Audrey

Répondre à Ptit_bouchon

2

Real_Kaz, le 22 avr 2008 à 11:04:56
  • +1

IL faut passer par le MySql Consol pour changer le "delimiter".

Répondre à Real_Kaz

3

 Le marocain, le 18 jui 2009 à 17:25:47

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
/////////////////////////////////////////////////////////////////////////////////

Répondre à Le marocain