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 : 10 116

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]
 

Commentaires et avis

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

Discussions en rapport avec ce code source dans le forum

exercice [ par roupis ] je suis un jeune débutant et j'ai besoin d'aide sur un exercicemerci de m'aider"un distributeur de produits pharmaceutiques homéopathiques souhaite in faire un boucle pour en sql ? [ par raziel62 ] salut, est il possible de faire des boucles POUR en sql ??? J'ai chercher sur internet mais j'ai rien trouver, vous connaissez pas des sites d'aide en Lot dts SQL server dans un excel [ par karn ] Bonjour, j'ai creer un lot qui exporte une vue dans un fichier excel, ca marche bien, le seul probleme est que lorsque que je le relance au lieu update dans un trigger depuis une autre base [ par fabyrob ] Bojour à tous,Je voudrai dans un trigger update d'une base X faire un update dans une base Y. J'ai récupéré les infos que je veux Trigger SQL server [ par Lolo36 ] Bonjour,Je souhaite créer un trigger qui incrémente un compteur.Voici l'algo que je souhaite mettre en place :A la création de la ligne requête sql (update avec deux bases) [ par jee0404 ]   Bonjour,            Je veux pouvoir updater le prix de mes enregistrements de la base de UPDATE avec plusieurs tables [ par magic_Nono ] BonjourJe faisais un prog VC6 avec accès à une BD mySql (une autre partie du soft est basé sur LAMP)lors de mes tests, j'utilisais easy REQUETE UPDATE [ par nawal59 ] Salut,voici mon problème:je fais un formulaire de saisie qui renvoie les données dans une table "table1" et dans ce formulaire, j'ai fais un requête UPDATE [ par richch ] Salut,Voici une requête qui ne fonctionne pas, j'ai pas traové l'erreur, veuillez m'aider.SQL = "UPDATE admin SET password='" & nouveauM Problème update avec des decimales [ par Kahoola ] Bonjour, j'ai un problème lors d'une modification d'une table  avec des champs de type Décimal. Voilà ma requête : Dim mon


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,655 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.