|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Inscription : septembre 2007 Messages : 339 ![]() |
Bonjour,
J'ai plusieurs transactions ouvertes en niveau READ COMMITED. J'aimerais faire un update de tuples différents sur la même table, et la première transaction bloque la deuxième. Je pensais que le niveau de blocage était au niveau ROW et pas au niveau TABLE, mais ça ne semble pas être le cas. Y a-t-il moyen de mettre le verrou au niveau ROW ? Est-ce une configuration de table, de base de donnée, de moteur ou de transaction ? Merci d'avance de votre aide ! |
|
|
00
|
|
|
#2 |
|
Membre régulier
![]() Inscription : septembre 2007 Messages : 339 ![]() |
Le blocage au niveau TABLE (ou PAGE) est uniquement pour la commande UPDATE. La commande INSERT ne bloque que les rows qu'elle insère.
|
|
|
00
|
|
|
#3 | ||||
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 953 ![]() |
Citation:
Citation:
Citation:
Postez les SVP. Néanmoins vous pouvez imposez le type de verrous par objet avec ALTER INDEX (même sur une table) Ou alors par requête avec un hint du genre ROW LOCK. Citation:
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
||||
|
00
|
|
|
#4 |
|
Membre régulier
![]() Inscription : septembre 2007 Messages : 339 ![]() |
Le hint du genre ROW LOCK n'étant pas sûr, j'ai testé la variante ALTER INDEX ALLOW PAGELOCK=false, et ça fonctionne.
La manière dont j'ai écrit mes transactions ne peut être changée. Par contre, il m'arrive encore sporadiquement d'avoir des interblocages qui sont dus à la suite d'exécutions de requêtes. Je ne peux rien faire contre ceux-ci. Je les catch donc dans l'application et relance la transaction. Après 5 essais je lance une erreur d'application. Merci pour l'aide !
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com