Bonjour,
Je cherche un moyen pour verrouiller un enregistrement en utilisant les services proposées par la base de donnée (je suis sur SqlServer 2005).
Je ne souhaite pas utiliser une table annexe pour gerer les verrous car si l'on rencontre un plantage, l'enregistrement reste verrouillé.
Voici la méthode que j'ai trouvé pour le moment :
Pour verrouiller :
1 2
| BeginTrans
Update MaTable set ID=ID where ID=X |
Pour dévérrouiller :
Pour savoir si l'enregistrement est verrouillé ou pas, je fais :
Select * from Matable with(ReadPast) where ID=X
Si le retour est vide c'est que l'enregistrement est verrouillé ou bien qu'il n'existe pas.
Dans les traitements de reporting :
Select * from Matable with(nolock)
L'option NoLock est obligatoire même si l'on défini la propriété LockType = ltReadOnly. Sinon tant que le verrou n'est pas libéré, on attend....
Merci pour vos remarques
Partager