SQL Server: ¿las transacciones se retrotraen por error?
Tenemos una aplicación de cliente que ejecuta algunos SQL en un SQL Server 2005 como el siguiente:
BEGIN TRAN;
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
COMMIT TRAN;
Es enviado por un comando de cadena larga.
Si una de las inserciones falla, o si falla alguna parte del comando, ¿SQL Server revierte la transacción? Si no se deshace, ¿tengo que enviar un segundo comando para revertirlo?
Puedo dar detalles sobre la API y el idioma que estoy usando, pero creo que SQL Server debería responder de la misma manera en cualquier idioma.