Consideremos el siguiente código SQL:¿Cuál es el alcance del aislamiento en las transacciones anidadas en SQL Server?
BEGIN TRAN SET TRANSACTION ISOLATION LEVEL READ COMMITTED INSERT Bands ( Name ) SELECT 'Depeche Mode' UNION SELECT 'Arcade Fire' -- I've indented the inner transaction to make it clearer. BEGIN TRAN SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED SELECT * FROM Bands COMMIT -- What is the isolation level right here? UPDATE Bands SET Name = 'Modest Mouse' WHERE Name = 'Oddest House' COMMIT
En suma, iniciar una transacción y establecer su nivel de aislamiento a READ COMMITTED
. Luego hacemos SQL aleatorio y comenzamos otra transacción anidada. En esta transacción, cambiamos el nivel de aislamiento a READ UNCOMMITTED
. Luego cometemos esa transacción y volvemos a la otra.
Ahora, supongo que después del compromiso interno, el nivel de aislamiento vuelve a READ COMMITTED
. ¿Es esto correcto?
esto es correcto, acabo de probar con sp_lock –