Salut !
Je suis confronté à une sympathique erreur 1264
La colonne unt_nb est en int unsigned.#1264 - Out of range value adjusted for column 'unt_nb' at row 1
Je veux bien qu'une valeur négative produise cette erreur dans une colonne de type int unsigned, mais on m'a toujours dit que 5 était positif !
Voici ma requete :
les deux premières colonnes sont un index unique, et il n'y a qu'une seule ligne dans la table : (1, 1, 6)INSERT INTO gp_unt (unt_legid, unt_iuntid, unt_nb)
VALUES (1, 1, -1)
ON DUPLICATE KEY UPDATE unt_nb = unt_nb + IF(VALUES(unt_nb) > -unt_nb, VALUES(unt_nb), -unt_nb)
Le but de ma requete est de modifier cette ligne en (1, 1, 5). Car 6 - 1 = 5. La requete marche parfaitement lorsque ma 3e colonne unt_nb est signée, mais elle ne marche plus lorsque unt_nb n'est pas signée !
Un simple UPDATE faisant unt_nb = unt_nb - 1 marche parfaitement aussi. C'est donc la forme avec le ON DUPLICATE KEY qui ne marche pas, est-ce un bug ?
J'ai peut-être loupé qqch. En tout cas j'ai rien vu dans la doc qui ne met en garde contre un problème avec les unsigned et le ON DUPLICATE KEY.
Si vous avez des idées, des expériences, je suis preneur
Merci
PS : je suis sous mysql 5.0.19-nt
Partager