Sql server - update d'une table en boucle par lot

Contenu du snippet

Dans certains cas, des mises à jours peuvent être très longues.
De plus l'exécution d'un script se fait au travers d'une transaction et si un problème survient, tout est perdu.

La solution est donc le passage par une boucle qui fait des mises à jour par lot de 10 (dans cet exemple).

Source / Exemple :


-------------------------------------------------------------------------
-- Dans la table destination on retrouve un champ ID et un champs Text --
-------------------------------------------------------------------------

WHILE EXISTS(SELECT ChampID FROM TableDestination WHERE ChampData='')
BEGIN
  UPDATE TableDestination dest
  SET dest.ChampData = 'Ma Valeur de Test'
  WHERE ChampID IN (SELECT TOP 10 ChampID FROM TableDestination WHERE ChampData='' ORDER BY ChampID)
END

-------------------------------------------------------------------------

Conclusion :


Je vous laisse adapter la solution à votre besoin

Pour information, je me suis basé sur ce modèle pour exécuter un script d'alimentation qui à duré plus de 10 Jours.

Bon coding

Romelard Fabrice [MVP]

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.