Pour ceux qui ne le savent pas je suis très intéressé par tout ce qui touche de près ou de loin à MySQL. J'ai poussé le vice à utiliser pour le forum de mon site un classement des sujets et messages sans utiliser la condition LIMIT (en savoir plus). Ce système requiert notamment l'utilisation des transactions MySQL étant donné qu'à chaque nouveau sujet la position de tous les sujets change. Il faut donc être sûr que toutes les requêtes s'exécutent correctement :
- Récupération des infos du forum (droits, nombre de post-it, etc)
- Création du sujet
- Récupération de l'id du sujet
- Création du message
- Récupération de l'id du message
- Insertion dans la table des sujets de l'id du dernier message
- Update du foruma vec nombre de sujets et id du dernier post et sujet
- Création des flags (lu, non lu, posté, favori, mail) pour le sujet et le membre
- Calcul des positions des autres sujets
Malgré les apparences tout cela est très rapide, néanmoins chaque requête dépendant de la précédente, faut pas que ça coince en cours de route sinon les sujets se retrouvent très vite en désordre (bug du post-it volant sur le SdZ). Les transactions permettent donc d'assurer que tout va s'exécuter et que si ça coince les modifications seront annulées.
Les transactions avec MySQL et PDO
Bonne lecture.