OVH Cloud OVH Cloud

Problème de lock

2 réponses
Avatar
Michel Provost
Voici la situation :



Il y'a un usager «A » qui fait les commandes suivantes :



-------------------------------------------

BEGIN TRANSACTION

UPDATE COMMANDE

SET STATUT = 200

WHERE JOB = 1



-- Liste d'instruction à exécuter (1 à 2 minutes d'exécution)



COMMIT TRANSACTION

--------------------------------------------







En même temps il y a l'usager «B» qui fait la commande suivante :

--------------------------------------------

SELECT *

FROM COMMANDE

WHERE JOB = 1

--------------------------------------------

A l'exécution de cette commande l'usager B est en attende de l'usager «A».



J'aimerais savoir si c'est possible que l'usager «B» soit capable de faire
un SELECT quand même?



J'aimerais savoir si c'est possible que l'usager «B» exécute sont SELECT
mais avec la valeur d'origine puisque l'update n'a pas encore eu la commande
COMMIT TRANSACTION?



Merci


Michel Provost
DBA

2 réponses

Avatar
Lionel Pénuchot
Bonjour,

Il n'est pas possible d'accéder à l'image avant. Juste l'image après avec un
NOLOCK

select ... (nolock).

Secret de polichinelle : ça vient avec la prochaine version.


Cordialement,
LionelP


"Michel Provost" wrote in message
news:


Voici la situation :



Il y'a un usager «A » qui fait les commandes suivantes :



-------------------------------------------

BEGIN TRANSACTION

UPDATE COMMANDE

SET STATUT = 200

WHERE JOB = 1



-- Liste d'instruction à exécuter (1 à 2 minutes d'exécution)



COMMIT TRANSACTION

--------------------------------------------







En même temps il y a l'usager «B» qui fait la commande suivante :

--------------------------------------------

SELECT *

FROM COMMANDE

WHERE JOB = 1

--------------------------------------------

A l'exécution de cette commande l'usager B est en attende de l'usager «A».



J'aimerais savoir si c'est possible que l'usager «B» soit capable de faire
un SELECT quand même?



J'aimerais savoir si c'est possible que l'usager «B» exécute sont SELECT
mais avec la valeur d'origine puisque l'update n'a pas encore eu la


commande
COMMIT TRANSACTION?



Merci


Michel Provost
DBA




Avatar
Fred BROUARD
tout dépend du niveau d'isolation des transactions.

A lire :
http://sqlpro.developpez.com/TECH/SQL_TEHC.html#TECH01
http://sqlpro.developpez.com/TransactSQL/SQL_MSTransactSQL.html
Paragraphe 3.6 Gestion de transactions

A +

Michel Provost a écrit:
Voici la situation :



Il y'a un usager «A » qui fait les commandes suivantes :



-------------------------------------------

BEGIN TRANSACTION

UPDATE COMMANDE

SET STATUT = 200

WHERE JOB = 1



-- Liste d'instruction à exécuter (1 à 2 minutes d'exécution)



COMMIT TRANSACTION

--------------------------------------------







En même temps il y a l'usager «B» qui fait la commande suivante :

--------------------------------------------

SELECT *

FROM COMMANDE

WHERE JOB = 1

--------------------------------------------

A l'exécution de cette commande l'usager B est en attende de l'usager «A».



J'aimerais savoir si c'est possible que l'usager «B» soit capable de faire
un SELECT quand même?



J'aimerais savoir si c'est possible que l'usager «B» exécute sont SELECT
mais avec la valeur d'origine puisque l'update n'a pas encore eu la commande
COMMIT TRANSACTION?



Merci


Michel Provost
DBA





--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************