begin process at 2008 08 08 23:22:34
1 223 648 membres
406 nouveaux aujourd'hui
14 230 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SQL SERVER - UPDATE D'UNE TABLE EN BOUCLE PAR LOT


Information sur la source

Catégorie :Trucs & Astuces Classé sous : update, lot, boucle, top Niveau : Initié Date de création : 05/03/2007 Vu : 5 600

Note :
9 / 10 - par 2 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note


Description

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

  • -------------------------------------------------------------------------
  • -- 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
  • -------------------------------------------------------------------------
-------------------------------------------------------------------------
-- 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]
  • signaler à un administrateur
    Commentaire de pifou25 le 09/05/2007 12:20:55

    bravo, très pratique, ça ne remplace pas avantageusement la fonction Format() du VB mais au moins ça dépanne ^^

  • signaler à un administrateur
    Commentaire de pifou25 le 09/05/2007 12:24:08

    (en fait mon commentaire n'était pas du tout pour cette source mais pour ton autre la qui imbrique 3 CAST pour formater un nombre) (tu es prolixe en sources ici...)

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS