[SQLSERVER2008] Eclaircissement sur les locks
Bonjour,
Je suis loin d'être un spécialiste SQL et il y a un scénario de lock que je n'arrive pas à comprendre dans SQL Server 2008, donc je me tourne vers vous :D
Je crée d'abord une table bidon, sans index, ni primary key (important)
Code:
1 2 3 4 5 6 7
|
CREATE TABLE MaTable (col1 int)
INSERT INTO MaTable VALUES(1)
INSERT INTO MaTable VALUES(2)
INSERT INTO MaTable VALUES(3)
INSERT INTO MaTable VALUES(4)
INSERT INTO MaTable VALUES(5) |
J'utilise SQL Server management studio et je lance une première Query avec une Transaction (sans commit) qui met à jour l'enregistrement de valeur 2:
Code:
1 2 3
|
BEGIN TRANSACTION
UPDATE MaTable SET Col1 = Col1 WHERE Col1 = 2 |
Je lance alors une deuxième query
Code:
1 2 3
|
BEGIN TRANSACTION
UPDATE MaTable SET Col1 = Col1 WHERE Col1 = 3 |
La deuxième query se mettra alors en attente tant que je ne commit pas la première :question:
Après m'avoir arraché les cheveux, je suppose que la query 1, vu qu'il n y a pas d'index va scanner tout le contenu de la table, mais pourquoi est-ce que la table n'est pas libérée une fois le scan terminé ?
Y a t-il un autre moyen d'éviter ça sans utiliser d'index ?
Merci d'avance :zoubi: