J'essaie de faire une mise à jour dans la table MySql - en migrant simplement les données d'un utilisateur vers un autre utilisateur. La ligne concrète doit être migrée uniquement lorsque la ligne avec le même ID unique devid
n'existe pas encore pour ce second utilisateur.Mettre à jour la table MySql - tester l'unicité d'un champ pendant la mise à jour
La déclaration de mise à jour que j'ai utilisé est:
update userdata as userdata1 set userid=${newuser}
where
userid=${olduser} and
userdata1.devid !=
(select devid from userdata as userdata2
where
userdata2.userid = ${newuser} and userdata2.`devid` = userdata1.`devid`)
Le MySql retourne:
You can't specify target table 'userdata' for update in FROM clause
Mais de l'autre côté, les travaux de l'instruction SELECT similaires, ou de la déclaration de mise à jour similaire, lorsque je teste des données sur un autre, cette même table fonctionne également. Donc c'est une limitation, qu'il n'est pas possible de faire sur la même table lors de la mise à jour? Et comment gérer cela?
Merci,
Jindrich
Wouldn'ta 'UNIQUE key' plutôt utile? – glglgl
J'ai une contrainte UNIQUE KEY, mais cela empêche seulement de ne pas avoir le même DEVID plus d'une fois, mais j'ai besoin de gérer la mise à jour pour ne pas essayer, car toute la requête va échouer avec violation de contrainte. – sarsonj