Je cherche a effectuer une requete unique (atomique ?) pour eviter les problemes de validite des donnes lors de l'utilisation du systeme par un grand nombre d'utilisateurs.
Ainsi, pour faire simple, disons que j'ai deux tables utilisees pour faire un forum : topics et posts.
Chaque post se verrait attribue lors de sa creation un numero unique qu'on appelera "rank", qui est son rang de creation DANS le topic (donc rien a voir avec le champ id). Ainsi, plusieurs posts peuvent avoir le meme rank "2", mais alors ce sont des posts venant de differents topics. Dans un topic, chaque post a un rank unique dans le topic.
Si il existe dans un topic 3 posts, et que le deuxieme a ete supprime, je souhaite que le rank ne change pas, et donc il faut qu'il ait ete calcule a la creation du post.
Ainsi, je me demande comment je pourrais effectuer de facon a ce que ce rank soit calcule dans la meme requete que celle qui sert a creer le post.
Au moment de la creation du post, le rank correspond donc au count des posts pour le topic en question.
J'ai essaye quelquechose comme ci dessus, mais je pense que ce n'est pas correcte au niveau syntaxe, c'est juste pour expliquer l'idee. Quelqu'un aurait une idee de comment proceder ?
(au final c'est surtout la requete INSERT que j'aimerais pouvoir faire)
Code : Sélectionner tout - Visualiser dans une fenêtre à part UPDATE posts SET rank = (SELECT count(id) FROM posts WHERE topic_id = 8) WHERE id = 10;
Merci d'avance !
Partager