|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre régulier
![]() Inscription : octobre 2007 Messages : 251 ![]() |
Bonjour,
J'ai une table contenant les records de joueurs. Pour que le classement soit cohérent, lors de l'insertion d'un record, je dois décaler les classement des joueurs moins bon d'une place. Pour cela je pensais passer par un trigger de ce style : Code :
Code :
Updating of OLD row IS NOT allowed IN TRIGGER OK mais alors comment fait-on pour désigner : - les colonnes de la ligne que l'on va insérer (le score à insérer) - les colonnes de la ligne sur laquelle on fait le test, (les scores existants) - les nouvelles valeurs des colonnes de la ligne qui est en train d'être testée ? (la nouvelle valeur d'un score déjà existant) Si c'est pas très clair hésitez pas à me le faire savoir, je sais que c'est pas simple à expliquer Merci beaucoup |
||
|
|
00
|
|
|
#2 |
|
Nouveau Membre du Club
![]() Inscription : avril 2008 Messages : 24 ![]() |
Bonjour,
La table OLD fait référence au(x) ligne(s) modifiée(s) ou supprimée(s). La table NEW contient la ligne qui va être insérée. Un principe possible pour ton trigger est avant d'insérer, de modifier le classement. Un Before insert. Un update pour modifier le classement des joueurs moins bon. |
|
|
00
|
|
|
#3 | ||
|
Membre régulier
![]() Inscription : octobre 2007 Messages : 251 ![]() |
Merci rewsna de me filer un coup de pouce c'est sympa.
Pour "OLD", MySQL n'en veut pas sur un trigger "on insert". Quand j'enlève OLD, il me dit que classement n'est pas une variable système connue. Du coup je spécifie la table mais il n'en veut pas non plus Code :
|
||
|
|
00
|
|
|
#4 |
|
Nouveau Membre du Club
![]() Inscription : avril 2008 Messages : 24 ![]() |
Bonjour
En cherchant, je viens de m'apercevoir que Mysql ne supporté pas de insert/update/delete sur la même table que le trigger insert. Dans le but d'empecher les appels recursifs infinis. Deux solutions pour contourner le problème : - Déplacer la modification des lignes du coté applicatif. - Utiliser une table temporaire. Il y a peut être d'autres solutions. |
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() Inscription : octobre 2007 Messages : 251 ![]() |
Ok je comprends mieux
ça fonctionne comment la table temporaire ? Le traitement c'est : àprès chaque insert sur table temporaire, on reclasse la "vrai table" et on insére le nouvel enregistrement ? (Parce que si l'applicatif plante au milieu d'une action d'INSERT la base est vérollée ...) MErci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com