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 :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
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