Mammouth du PHP |
661 Messages
19 mai 2010, 18:49
salut !...
bon, j'ai une solution avec une procédure stockée :: c'est peut-etre pas la meilleur, mais elle effectue ce que tu veux
la table que j'ai utilisé est la suivante ::
idTest var var2
1 1 1
2 2 1
3 11 1
4 15 1
5 9 1
6 7 1
7 13 1
8 6 1
et la procédure :
CREATE PROCEDURE `incre`()
BEGIN
DECLARE nb INT; /* variable qui contiendra la valeur à utiliser pour l'UPDATE */
DECLARE id INT; /* variable contenant l'idTest de la ligne qui nous intéresse */
SELECT MAX(var) INTO nb FROM test;
SELECT idTest INTO id FROM test ORDER BY var LIMIT 0,1;
UPDATE test SET var = (nb+1) WHERE idTest = id;
END;
je la fais fonctionner ainsi :
CALL incre();
et tu constatera qu'elle va effectuer le travaille demandé
si tu veux que la procédure te retourne l'id qui à été modifié, tu peux faire ça ::
CREATE PROCEDURE `incre`(OUT id INT)
BEGIN
DECLARE nb INT; /* variable qui contiendra la valeur à utiliser pour l'UPDATE */
SELECT MAX(var) INTO nb FROM test;
SELECT idTest INTO id FROM test ORDER BY var LIMIT 0,1;
UPDATE test SET var = (nb+1) WHERE idTest = id;
END;
avec comme commandes ::
CALL incre(@a);
SELECT @a ;
tu as toutes les explications sur
les procédures MySQL ici

Bon courage !
EDIT : oups, j'avais pas vu ta réponse, AB ...