sql >> Base de Datos >  >> RDS >> Sqlserver

¿Qué hace una transacción en torno a una sola declaración?

No hace nada. Todas las declaraciones SQL individuales (con raras excepciones, como las inserciones masivas sin registro o la tabla truncada) están automáticamente "en una transacción", ya sea que lo diga explícitamente o no ... (incluso si insertan, actualizan o eliminan millones de filas) .

EDITAR:basado en el comentario de @Phillip a continuación... En las versiones actuales de SQL Server, incluso las inserciones masivas y la tabla truncada escriben algo datos al registro de transacciones, aunque no tanto como otras operaciones. La distinción crítica desde una perspectiva transaccional es que en estos otros tipos de operaciones, los datos en las tablas de la base de datos que se modifican no están en el registro en un estado que permita revertirlos.

Todo esto significa que los cambios que hace la declaración en los datos de la base de datos se registran en el registro de transacciones para que se puedan deshacer si la operación falla.

La única función que proporcionan los comandos "Begin Transaction", "Commit Transaction" y "RollBack Transaction" es permitirle colocar dos o más instrucciones SQL individuales en la misma transacción.

EDITAR:(para reforzar el comentario de las marcas...) SÍ, esto podría atribuirse a una programación "supersticiosa", o podría ser una indicación de un malentendido fundamental de la naturaleza de las transacciones de la base de datos. Una interpretación más caritativa es que es simplemente el resultado de una aplicación excesiva de consistencia que es inapropiada y otro ejemplo más del eufemismo de Emerson que:

Una tonta consistencia es el duende de las mentes pequeñas,
adorado por pequeños estadistas, filósofos y teólogos