Rechercher : dans
Par :

MYSQL:erreur syntaxe trigger

Dernière réponse le 18 jui 2009 à 17:24:23 novasuper, le 7 mai 2009 à 11:55:58 
 Signaler ce message aux modérateurs

Salut,

j'essaie de créer un trigger avec MySQL (j'utilise EasyPHP) mais je reçois toujours la même erreur :

</code>
#1064 - Erreur de syntaxe près de 'BEGIN DELETE FROM tab2 WHERE tab2ID = old.tab1ID' à la ligne 3
</code>

le but de mon trigger est de supprimer les lignes dans tab2 (qui correspond à l'enregistrement du tab1) avant la suppression de la ligne dans tab1

CREATE TRIGGER test 
BEFORE DELETE ON tab1
BEGIN
DELETE FROM tab2 WHERE tab2ID = old.tab1ID
 


j'ai essayé plusieurs autres exemple de trigger mais aucun n'a marché.
Configuration: Windows XP
Firefox 3.0.5

Meilleures réponses pour « MYSQL:erreur syntaxe trigger » dans :
Parse error: syntax error, unexpected $end VoirLorsque l'on programme en Php, on se retrouve inévitablement un jour devant ce genre d'erreur: Parse error: syntax error, unexpected $end in Command line code on line 1 En français, ça signifie grossièrement: "Erreur d'analyse du code: il y a une...
Eviter d'être bloqué en cas d'erreur TOO MANY CONNECTIONS VoirPar défaut, Mysql autorise 100 connexions (150 depuis la version 5.1) au serveur ... Cela signifie que le 101ème utilisateur recevra le message d'erreur "too many connections" ... Si cela vous arrive, quelqu'en soit la raison (site web trop...
MySQL en console sur Windows : désactiver le bip d'erreur VoirLorsque vous utilisez MySQL en console sur Windows, chaque erreur provoque un bip. Pour le désactiver, il vous suffit simplement de rajouter le paramètre -b dans votre chaîne de connexion : mysql -b -h serveur -u utilisateur -p Vos voisins...
PHP - Connexion à un annuaire LDAP VoirIntroduction à LDAP PHP permet la connexion et l'envoi de requêtes sur un annuaire LDAP, c'est-à-dire un serveur permettant de stocker des informations de manière hiérarchique. Un serveur LDAP est conçu pour être capable de gérer les opérations...

1

Christounet, le 7 mai 2009 à 17:52:52

Bonjour,

Je pense que la syntaxe exacte d'un trigger est la suivante:

CREATE TRIGGER test 
BEFORE DELETE ON tab1 FOR EACH ROW
BEGIN
DELETE FROM tab2 WHERE tab2ID = old.tab1ID
END

A plus On se donne des souvenirs quand on se quitte.
(Marcel Achard)

Répondre à Christounet

2

 Le marocain, le 18 jui 2009 à 17:24:23

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