|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 3 ![]() |
Bonjour,
Je souhaiterais faire un update d'une variable d'une table DB2, mais je voudrais être sur de ne mettre à jour qu'un seul enregistrement. Y a un moyen en DB2 pour cela. Est ce avec le "one row" ? Je souhaiterais connaitre la nomenclature exacte. Merci de votre aide. |
|
|
00
|
|
|
#2 |
|
Membre actif
![]() Inscription : juin 2008 Messages : 146 ![]() |
Info : pour connaitre le nombre de lignes modifiées par un update, tu peux te servir de la variable SQLERRD(3). Ca peut toujours te permettre de faire un éventuel ROLLBACK si cette variable est supèrieure à 1.
Ceci dit, pour être certain de ne mettre à jour qu'une seule ligne : - soit tu appliques des prédicats renvoyant une et une seule ligne, - soit tu dois travailler avec un curseur. En effet, si tu as des lignes en doublons parfaits dans ta table et que tu souhaites ne modifier qu'une seule de ces lignes, il faut passer par l'écriture d'un programme dans lequel tu déclares un curseur FOR UPDATE. Après le FETCH, tu peux mettre à jour la ligne en écrivant UPDATE TAB SET COL = ... WHERE CURRENT OF NOMCURS. Dans ce cas, tu ne mets à jour que la ligne en cours. Le ONE ROW dont tu parles, j'imagine qu'il s'agit de la clause FETCH FIRST 1 ROW ONLY. Cette clause te permet en effet de ramener 1 et une 1 ligne (ou 5 si tu précises fetch first 5 row only), mais sauf erreur de ma part, elle n'est valable que pour un SELECT. Bonne utilisation. |
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : janvier 2008 Messages : 42 ![]() |
il y a quelque chose que je ne comprends pas dans la conception. Si les clés des enregistrements sont identiques (ce que je comprends) alors les propriétés sont différentes (sinon je ne comprends plus) ? Au moins sur 1 critère, non ? Dans ce cas ton prédicat devrait te permettre d'avoir unicité.
Quand au FIRST n ROW Only, je confirme qu'il ne s'applique qu'au SELECT de la même manière que l'OPTIMIZE FOR n ROWS |
|
|
00
|
|
|
#4 | |
|
Membre habitué
![]() Inscription : septembre 2004 Messages : 123 ![]() |
Faut préciser la plateforme (z/OS, AS400, Unix etc...) et la version.
Si Unix, Linux ou Windows en version 9 un exemple : Citation:
|
|
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() ![]() François DurandSpécialiste Delivery Mainframe IBM Inscription : octobre 2005 Messages : 1 098 ![]() |
Je reconnais la table c'est une des tables présentes sur le site sur lequel je travaille ...
Si votre problème persiste et si vous le souhaitez bien sûr, contactez moi en MP et je vous donnerai mes coordonnées au bureau et nous regarderons votre problème en direct "live" ... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com