REWRITE |
Rewritepermet de réécrire un enregistrement donné sur une table.
Rewrite [ classe ] [ clé ] [ mode_lect [ valeur_clé ] ]
clé | Désignation de la clé d'un fichier sous l'une des formes suivantes : | La clé doit être définie dans une clause Order By ou en paramétrage de la table. | ||||||||
exp_ind | Expression entière du nombre de parties de clés utilisées. Par défaut, toute la clé est utilisée. | 0 <=exp_ind <=nombre de composantes de la clé (au plus 8). | ||||||||
| ||||||||||
valeur_clé | Liste d'expressions séparées par ';' correspondant aux valeurs des sous-clés. | valeur compatible avec le type de la sous-clé. |
# Lecture d'un enregistrement pour modification du champ ZONE
Trbegin TEST [TEST]
Readlock [TEST]CLE2(1) = date$
If [S]fstat
[TEST]ZONE += 100
Rewrite
Commit
Else
Rollback
Endif
# Lecture, modification d'un enregistrement et réécriture
Readlock CLE = [M]CLE :# Lecture + verrouillage
[M] = [F] :# Transfert du fichier vers le masque
... :# Saisie des zones à modifier
[F] = [M] :# Transfert du masque vers le fichier
Rewrite
Unlock :# Déverrouillage
# Décalages d'enregistrements
# (l'enregistrement no 2 est écrit sur le 1, le 3 sur le 2, etc..)
# Ne fonctionne que sur un fichier non vide et sans clés uniques.
Read [TEST]CLE First
Read [TEST]CLE Next
While fstat=0
Rewrite
Read [TEST]CLE Next
Read [TEST]CLE Next
Wend
Rewritepermet de réécrire de nouvelles valeurs dans un enregistrement lu selon les divers modes énumérés dans le tableau précédent. Si on ne donne pas de valeur de clé pour les modes qui en demandent une ( '<', '>', '<=', '>=', '=' ), la valeur courante des variables de la classe [F] correspondant au fichier est utilisée.
Si aucun mode de lecture n'est donné, le mode Curr sera utilisé et l'enregistrement courant (c'est-à-dire le dernier lu) est modifié.
Les clés utilisables dans Rewrite sont :
On peut omettre dans la syntaxe de Rewrite l'abréviation du fichier ou le nom de la clé :
La variable fstat indique comment s'est déroulée l'écriture.
fstat | Code | Ecr. | Explication |
0 | Oui | La réécriture a eu lieu correctement. | |
1 | ERLOCK | Non | L'enregistrement est verrouillé. |
2 | ERECIND | Oui | En mode de lecture <= ou >= , signale que la lecture a eu lieu, mais que la clé trouvée est < ou > à la valeur recherchée. |
3 | ERDUPCL | Non | Tentative de création d'une clé dupliquée. |
4 | ERDEBF | Non | Début/Fin de fichier |
5 | ERPALEC | Non | Aucun enregistrement correspondant aux valeurs demandées. |
Lorsque la réécriture a réussi (c'est-à-dire si fstat est nul ou vaut éventuellement ERECIND), l'enregistrement devient l'enregistrement courant du fichier.
En attendant la fin de la transaction, les modifications ne seront pas visibles par les autres utilisateurs, sous Oracle, alors qu'elles le seront sous Sql-serveur. En effet, Adonix utilise pour Sql-serveur la technique du "dirty read"( ou read uncommited) c'est à dire que les écritures non encore commitées sont vues par les utilisateurs.
En fait, SQL-serveur offre la possibilité de faire des read "commited", mais dans ce cas, la lecture bloque sur les enregistrements modifiés ( contrairement à Oracle qui va lire dans les rollbacks-segments) ce qui risque d'engendrer des ralentissements tout particulièrement sur les listes gauches.
Il n'est pas possible d'utiliser une abréviation de lien pour réécrire unenregistrement.
La modification d'un enregistrement doit se faire à l'intérieur d'unetransaction.
L'enregistrement à réécrire sera de toute façon verrouillé et la réécriturene se fera que si cette opération a réussi, sinon [S]fstat sera positionné à 1.Se reporter à la documentation sur Readlock pour les problèmes concernant lesverrouillages d'enregistrements.
Dès qu'on a plusieurs enregistrements à mettre à jour, l'instruction Updatepeut-être plus rapide.
MODIN(22) | Modede lecture incorrect. |
ERINDI( 8) | Lenombre de valeurs données ou l'indice indiqué, dépasse le nombre d'élémentsde la clé. |
PACLE(21) | Laclé est inexistante sur ce fichier. |
ERCLAS( 7) | Laclasse fichier n'existe pas (fichier non ouvert). |
FILE - READLOCK - TRBEGIN - UPDATE - WRITE - FSTAT
Adonix X3(r) L4G |