REWRITE

Sommaire


Rewritepermet de réécrire un enregistrement donné sur une table.

 

Syntaxes

    Rewrite [ classe ] [ clé ] [ mode_lect [ valeur_clé ] ]

 

Paramètres

Elément

Description

Restrictions

clé

Désignation de la clé d'un fichier sous l'une des formes suivantes :
nom_de_variable
nom_de_variable '('
exp_ind ')'

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).

mode_lect

L'un des mots-clés suivants, ou l'un des opérateurs suivants :

mot-clé

opérateur

Mode de lecture utilisé

First
Last
Curr
Prev
Next







>=
>
=
<
<=

1er enregistrement
Dernier enregistrement
Enregistrement courant
Enregistrement précédent
Enregistrement suivant
Clé >= valeur_clé
Clé > valeur_clé
Clé = valeur_clé
Clé < valeur_clé
Clé <= valeur_clé

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é.

 

Exemples

    # Lecture d'un enregistrement pour modification du champ ZONE
     Trbegin TEST [TEST]
     Readlock [TEST]CLE2(1) = date$
     If [S]fstat
        [TEST]ZONE += 100
       
Rewrite [TEST]
        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    :# Réécriture de l'enregistrement courant
     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 [TEST]CLE Prev
        Read [TEST]CLE Next
        Read [TEST]CLE Next
     Wend

 

Description et commentaires

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

spacer.gif (822 octets)

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.

 

Remarque

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.

 

Erreurs associées

Erreur

Description

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).

 

Mots-clés associés

FILE - READLOCK - TRBEGIN - UPDATE - WRITE - FSTAT


SOMMAIRE

Adonix X3(r) L4G
Copyright (c) Adonix 1999 - All rights reserved