UPDATE |
Updatepermet de réécrire des enregistrements d'une table avec les valeurs passées enparamètre.
Update
Elément | Description | Restrictions |
Abréviation d'un fichier ouvert | Aucune | |
Expression_de_sélection Voir Where | Aucune | |
nom d'un champ de la table | Aucune | |
expression donnant la valeur que doitprendre le champ | de type comptatible avec celui du champ - voir Where - |
# Mise à jour du champ FLGACTIF dufichier CLIENT pour tous les
# enregistrements dont les zones DEBIT etCREDIT sont à 0.
FileCLIENT [CLI]
& With FLGACTIF = 1
#affichage du nombre d'enregistrements modifiés
Infbox "enregistrements modifiés"-[S]adxuprec
# Incrémentation du nombre d'éditions
Update [DIV] WhereFLAGEDIT & CLE >= [M]DEB1 With NBEDIT += 1
Updatepermet d'affecter certains champs des enregistrements d'une table avec les valeurs passées en paramètres en faisant automatiquement les opérations de lecture, verrouillage, réécriture et déverrouillage. Cette instruction permet de simplifier l'écriture du traitement et d'accélérer ces opérations dès que plusieurs enregistrements sont en cause.
Cette instruction exploite la possibilité de faire sur les bases de données Oracle une requête de même type. Adonix ne fait que traduire les expressions passées dans un langage compréhensible à la base de données, ce qui limite le choix des fonctions possibles. On se reportera à la documentation de la clause Where pour en avoir la liste.
Updatemet à jour la variable fstat pour indiquer comment s'est déroulée l'opération.
fstat | Code | MàJ | Explication |
0 |
| Oui | La mise à jour a eu lieu correctement. adxuprec enregistrements ont été modifiés. ou aucun enregistrement n'a été sélectionné. |
1 | ERLOCK | Oui et Non | En inter-blocage, dans ce cas, la transaction est abandonnée. |
3 | ERDUPCL | Non | Tentative de créer une clé non duplicable |
Adxuprec permet de connaître le nombre d'enregistrements mis à jour par une instruction Update.
On peut utiliser comme valeur une expression calculée à partir de la valeur d'un champ de la table. Cette valeur sera celle lue dans la table par l'opération de lecture faite par Update et non pas la valeur de la classe [F] telle qu'elle était avant l'instruction.
Exemple :[F:FIC1]NUMERO = 0
Update[FIC1] With NUMERO = NUMERO +1
Les différentes valeurs de NUMERO seront incrémentées et non pas passées à 1.
ATTENTION : on ne peut pas prédire le comportement d'une instruction Update qui affecterait un champ avec la valeur d'un champ lui-même affecté par Update.
Exemple :
Update[FIC] With CHAMP1 = VALEUR, CHAMP2 = CHAMPA.
Tentative de mise à jour d'enregistrements verrouillés :
Dans les deux cas, l' Update reste en attente et poursuit sa mise à jour lorsque l'enregistrement se libère. Par contre, en inter-blocage, l' Update arrête sa mise à jour et envoie un fstat=1.
Updatene modifie pas les variables de la classe [F] correspondant au fichier.
On ne peut pas utiliser une abréviation de lien pour mettre à jour un fichier.
La mise à jour par Update doit se faire à l'intérieur d'une transaction.
En cours de transaction, les modifications ne seront pas visibles par lesautres utilisateurs.
Chaque verrouillage d'enregistrement "réussi" implique l'attribution d'un verrou, mais le verrou n'est libéré qu'à la fin de la transaction. Toute base utilise ses propres verrous et leur nombre est limité par un des paramètres de la base. Dans le cas où cette ressource serait épuisée, Adonix générera un erreur n 43 (FISLOCK). Il faudra alors, soit faire augmenter le nombre de verrous, soit modifier le programme, soit gérer cette erreur.
Le verrouillage dépend de la base de données. Il est indépendant de la valeur de [S]lockwait. Sous Oracle, Sql-serveur, Db2 la tentative de verrouillage se fera sans limitation de durée et sans possibilité de l'interrompre. Verrouiller la table dans son ensemble par Lock [abvf] est un moyen brutal, mais sûr d'éviter tout problème.
ERMODE(10) | Type de paramètres incompatibles avec les zones du fichier à modifier. |
ERCLAS( 7) | Laclasse fichier n'existe pas (fichier non ouvert). |
WHERE- READLOCK - FILE - REWRITE - TRBEGIN - FSTAT - FILTER - ADXUPREC
Adonix X3(r) L4G |