bonjour StringBuilder,
lorsque j'utilse "begin transaction" toutes les lignes de la table devient non modifiable.
Version imprimable
bonjour StringBuilder,
lorsque j'utilse "begin transaction" toutes les lignes de la table devient non modifiable.
Bien sur que non.
Et il y a une différence entre :
- Je lock les lignes que j'ai modifié jusqu'à ce que je valide/invalide la transaction
- Je lock les lignes que je lis, jusqu'à ce que je valide/invalide la transaction
Le premier cas est implicite avec les transactions.
Le second cas n'est pris en charge que par hint : il faut indiquer au SGBD qu'on lock ou non la table/page/ligne qu'on lit.
mon problème est que lorsque j'utilise "begin transaction" et que j'ai deux utilisateurs qui ont l'accès en exclusivité à deux lignes différentes d'une même table, l'un après l'autre. par conséquence le deuxième ne peut modifier la ligne dont il a l'accée. .
merci.
Poste ton code, qu'on sache au moins comment tu verrouilles tes lignes.
En tout cas "begin transaction", sans instruction derrière, ne provoque absolument aucun verrou.
bonjour,
mon code est :
BEGIN TRAN
SELECT * FROM PCC_COM WITH (HOLDLOCK, ROWLOCK) WHERE CODE = '10'
COMMIT TRAN
durant exécution de "select" et avant "COMMIT TRAN" la table est verrouillé.
merci pour votre aide
Le responsable, c'est ton "with".
Il provoque un verrou exclusif sur la ligne lue.
Plus exactement, sur la page lue, car par défaut, SQL Server ne fait pas des verrous à la ligne, mais à la page.
Cf. blog de SQLPro pour plus d'informations sur le sujet.
bonjour;
j'ai trouver la solution; il faut que la table a une clé.
bonjour,
et maintenant, je veux savoir comment je peux savoir si une ligne est verrouillé ou non.
merci.