SQL Server 2005 : mettre à jour efficacement plusieurs tables
SQL Server 2005 ne prend pas directement en charge la mise à jour de plusieurs tables au sein d'une seule instruction. Cependant, deux stratégies efficaces y parviennent : les transactions et les mises à jour par lots.
Méthode 1 : mises à jour transactionnelles
Les transactions assurent l'atomicité ; toutes les mises à jour réussissent ou aucune ne réussit. Un échec de mise à jour annule toutes les modifications. Utilisez BEGIN TRANSACTION
et COMMIT
pour gérer cela :
<code class="language-sql">BEGIN TRANSACTION; UPDATE Table1 SET Table1.LastName = 'DR. XXXXXX' FROM Table1 T1 INNER JOIN Table2 T2 ON T1.id = T2.id WHERE T1.id = '011008'; UPDATE Table2 SET Table2.WAprrs = 'start,stop' FROM Table1 T1 INNER JOIN Table2 T2 ON T1.id = T2.id WHERE T1.id = '011008'; COMMIT;</code>
(Remarque : l'exemple d'origine utilisait des jointures implicites. Cet exemple révisé utilise un INNER JOIN
explicite pour plus de clarté et une meilleure lisibilité.)
Méthode 2 : mises à jour par lots
Les mises à jour par lots exécutent plusieurs instructions en un seul appel à la base de données, ce qui améliore potentiellement les performances. Utilisez l'instruction GO
comme délimiteur :
<code class="language-sql">BEGIN TRANSACTION; UPDATE Table1 SET Table1.LastName = 'DR. XXXXXX' FROM Table1 T1 INNER JOIN Table2 T2 ON T1.id = T2.id WHERE T1.id = '011008'; GO UPDATE Table2 SET Table2.WAprrs = 'start,stop' FROM Table1 T1 INNER JOIN Table2 T2 ON T1.id = T2.id WHERE T1.id = '011008'; COMMIT;</code>
La commande GO
sépare les mises à jour en un seul lot pour exécution. N'oubliez pas que GO
est une commande côté client et ne fait pas partie du SQL standard. Son effet dépend de votre outil client SQL.
Choisissez la méthode qui correspond le mieux à vos besoins. Les transactions garantissent l'intégrité des données, tandis que les mises à jour par lots peuvent offrir des avantages en termes de performances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!