J'ai cette requête
UPDATE posts_flags
INNER JOIN
users ON (posts_flags.user_id = users.id )
SET
users.credibility = users.credibility + 100 /* or -100 */
WHERE posts_flags.content_id = ?;
3 Réponses :
Vous pouvez ajouter une contrainte code> vérifier code> pour éviter généralement les insertions / mises à jour en dehors de votre plage autorisée.
UPDATE posts_flags
INNER JOIN
users ON (posts_flags.user_id = users.id )
SET
users.credibility = MAX(MIN(users.credibility + 100, 1000), 0)
WHERE posts_flags.content_id = ?;
Grande solution!
Un simple si clause le fera
Je recommande pour si vous Voulez-vous générer une erreur si la ligne est en dehors de la plage, puis dans la plupart des bases de données, vous pouvez utiliser une contrainte code> vérifier code> (dans MySQL, vous avez probablement besoin d'une gâchette). Cependant, vous semblez vouloir imposer des limites extérieures, plutôt que de générer une erreur. P> p> moins () code> ou plus grand () code>. Pour + 100 code>: - 100 code>: p>
Ajouter à où
et utilisateurs.crédibilité <990 code>Simple et brillant
Ou plutôt
et utilisateurs.Crédibilité <900 code> manqués, vous avez ajouté 100