Problème mysql

Résolu
thegwendol Messages postés 27 Statut Membre -  
thegwendol Messages postés 27 Statut Membre -
Bonjour,
j'ai un problème je ne comprend pas mon erreur

delimiter //
CREATE trigger pasboucle before INSERT ON modele_descendant
FOR each ROW
BEGIN
DECLARE mod,ssmod,existe INTEGER;
SET mod = new.idmodele, ssmod = new.id_sousmodele;
SELECT count(*) into existe FROM modele_descendant WHERE idmodele=ssmod and id_sousmodele=mod ;
IF(existe != 0)THEN
RETURN FALSE
end if;
end//
delimiter ;

pourriez vous m'aider ?

merci d'avance

12 réponses

yacleouf Messages postés 461 Statut Membre 39
 
quel est ton problème? un problème mysql ou dans ton prog?
affiche l'erreur
0
thegwendol Messages postés 27 Statut Membre 16
 
voici le message d'erreur : #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 'mod,ssmod,existe INT; SET mod = new.idmodele, ssmod = new.id_sousmodele; SELEC' at line 4
0
yacleouf Messages postés 461 Statut Membre 39
 
et bien je pense que mod est le nom de ta table, or tu n'a pas mis de simple quote ' donc mysql interprete mod en tent que division (cf la fonction mod)

au passage tu essaye de faire quoi avec ta requete?
0
thegwendol Messages postés 27 Statut Membre 16
 
je n'avais pas pensé que mod pouvais être une fonction :p

c'est modele_descendant le nom de la table :)

Avec cette requête je cherche à vérifier qu'il n'y ait pas d'inscription genre

4 5
5 4

dans ma table
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
thegwendol Messages postés 27 Statut Membre 16
 
ça ne fonctionne toujours pas ... :'(
0
yacleouf Messages postés 461 Statut Membre 39
 
salut désolé du retard de réponse, mais tu porrait me montrer un aperçu de la base sur laquelle tu travail?
0
thegwendol Messages postés 27 Statut Membre 16
 
http://gwendal.praud.free.fr/boutdebd.png

je te donne un lien vers le bout de bd concerné
et c'est pas grave pour le retard :p
0
thegwendol Messages postés 27 Statut Membre 16
 
j'ai fait quelques modifications du trigger ces jours ci

delimiter //
CREATE trigger pasboucle before INSERT ON modele_descendant
FOR each ROW
BEGIN
DECLARE modele,ssmod,existe INT;
SET modele = new.idmodele, ssmod = new.id_sousmodele;
SELECT count(*) into existe FROM modele_descendant WHERE idmodele=ssmod and id_sousmodele=modele ;
IF(existe != 0)THEN
rollback
end if
end//
delimiter ;
0
yacleouf Messages postés 461 Statut Membre 39
 
et tu essaye de ressortir quoi?
explique moi ta requete parceque malgre que j'ai beaucoup pratiqué mysql trigger je ne l'ai pas beaucoup utilisé
0
thegwendol Messages postés 27 Statut Membre 16
 
en fait un modele(modele principal) peut etre composé de sous modèles (modele descendant) et je veux qu'un sous modèle ne puisse pas avoir lui même comme sous modele son "père"
0
yacleouf Messages postés 461 Statut Membre 39
 
Si je suis ton schéma, pourquoi tu ne définierais pas ton modèle descendant en tent que clé étrangère? il ne pourra pas contenir les modèles principaux.

Sinon regarde ce quil y a de dispo avec "inheritance" c4est les heritage sous mysql je croi que c'est dispo a partir de mysql5
http://laughingmeme.org/2004/08/14/mysql-and-the-case-for-class-table-inheritance/
j'espere que sa t'aidera
0
thegwendol Messages postés 27 Statut Membre 16
 
merci beaucoup mais je pense que je vais faire une fonction php ce sera plus simple pour moi

je vais la faire récursive et comme ça je peux vérifier un boucle à 2 mayons ou plus

merci encore

à la prochaine
0