Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
ID field
Message
De
15/11/2006 18:12:29
 
 
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Titre:
Versions des environnements
Visual FoxPro:
VFP 8 SP1
OS:
Windows XP
Database:
Visual FoxPro
Divers
Thread ID:
01170010
Message ID:
01170115
Vues:
18
This message has been marked as a message which has helped to the initial question of the thread.
>Hi everybody,
>
>AFAIK there is no way in multi-user environment to have ID field incremented correctly without using extra table to keep the last ID (if we're not using autoincrement field). Using go bottom, grab the last number and start from there doesn't prevent two users from taking the same ID. Even if we put a check right after for the existance of ID.
>
>What do you think? Given only one table and no auto-increment is it possible to correctly auto-increment in multi-user environment?
>
>Thanks.

This maybe a little weak, but at least you do not have to lock the entire table.
LOCAL i, nRecNo
GOTO bottom             && start at the bottom
DO WHILE NOT RLOCK()    && try to lock the record
    DOEVENTS            && if failed, try again
    GOTO BOTTOM         && always stay at the bottom, the next time it maybe a new record.
ENDDO
i=id                    && got the lock, get the its ID
nrecno=RECNO()          && remember the record number
INSERT INTO temp VALUES (i+1,"Test")      && insert new record with new ID
UNLOCK RECORD (nRecNo)  && unlock old record
Unlock the old record after inserting the new record to prevent the other users from using the same ID as you.
Greg Reichert
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform