Je n'arrive pas à find une réponse directe à ce qui devrait être une question simple. Si je crée une transaction dans T-SQL et définissez ISOLATION LEVEL sur SERIALIZABLE, cela crée-t-il un verrou READ sur les tables que je modifie?
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; GO BEGIN TRANSACTION; GO TRUNCATE TABLE TBL_PRODUCTS; GO **INSERT RECORDS HERE** GO COMMIT TRANSACTION; GO
TRUNCATE TABLE
va acquérir un verrou de modification shema exclusif sur la table empêchant tous les users de lire depuis la table (à less qu'ils n'utilisent et écrivent dans la table (aucune exception pour l'écriture). Le verrou exclusif sera publié à TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
ou WITH(NOLOCK)
)COMMIT TRANSACTION
.
EDIT: Comme Martin Smith l'a souligné dans son commentaire ci-dessous, la table truncate va acquérir un verrou de modification de schéma. Autrement dit, aucun autre user ne pourra lire ou modifier la table jusqu'à ce qu'une validation ou une annulation ait eu lieu.
Oui, il verrouillera la table, et voici les règles pour sérialisable: