J'ai une question concernant la mise à jour multi-tables (MySQL). Considérons les tableaux t1 et t2. Le PKEY pour t1 est 'tid' qui est une clé étrangère dans t2. Il y a un champ "qtyt2" dans t2 qui dépend d'un champ appelé "qtyt1" dans la table t1. Considérez l'instruction SQL suivante:Mise à jour multi-tables (MySQL)
UPDATE t2,t1
SET t2.qtyt2=IF((t2.qtyt2- t1.qtyt1)<0,0,(t2.qtyt2- t1.qtyt1)),
t1.qtyt1 ="Some value.."
WHERE t2.tid="some value.."
AND t2.tid=t1.tid
Dans cet exemple qtyt2 dépend de qtyt1 pour la mise à jour et ce dernier est lui-même updated.Now le résultat doit retourner 2 si deux lignes sont mises à jour. Y at-il une garantie que les champs seront mis à jour dans l'ordre dans lequel ils apparaissent dans la déclaration (qtyt2 premier sera défini, puis qtyt1)?
Est-il possible que qtyt1 sera défini en premier, puis qtyt2?
L'ordre des tables dans l'instruction est-il important (UPDATE t2, t1 ou UPDATE t1, t2)?
J'ai trouvé que si j'écrivais "UPDATE t1, t2" alors seulement t1 serait mis à jour, mais en changeant l'instruction à "UPDATE t2, t1" tout a fonctionné correctement.