Commit y Rollback

Commit y Rollback


commit
La sentencia COMMIT termina una unidad de trabajo y confirma los cambios de la base de datos que ha realizado esa unidad de trabajo.

Ejemplo:
Resumir los cambios en aproximadamente 50 caracteres o menos
 
Mas texto descriptivo, si es necesario.  Limita aproximadamente a 72 caracteres o menos. En algunos contextos, la primera línea se establece como el asunto del commit y el resto es el cuerpo. La línea en blanco que separa el asunto del cuerpo es fundamental (a menos que se omita el cuerpo por completo); diversas herramientas como `log`,` y `shortlog` y `rebase` pueden confundirse si ejecuta los dos juntos.

Explique el problema que el commit está resolviendo. Concéntrese en por qué usted está haciendo este cambio en comparación de cómo  (pues el código explica esa parte).
¿Hay efectos secundarios u otros consecuencias poco intuitivas en este cambio? Este es el lugar para explicarlos.

Otros párrafos vienen después de líneas en blanco.

 - Las viñetas o listas son aceptables también 
 - Normalmente, un guión o asterisco se utiliza para la viñeta, precedido por un solo espacio, con líneas en blanco en el medio, pero hay diferentes convenciones 

Si utiliza un administrador de "issues", coloque referencias a ellos en la parte inferior, así: 

Resuelve: # 123 
Consulte también: # 456, # 789

Rollback
un rollback es una operación que devuelve a la base de datos a algún estado previo. Los Rollbacks son importantes para la integridad de la base de datos, a causa de que significan que la base de datos puede ser restaurada a una copia limpia incluso después de que se han realizado operaciones erróneas


Ejemplo:
START TRANSACTION
SELECT * FROM suppliers
WHERE supplier_name like '%bob%';
ROLLBACK TRANSACTION;

Transacciones

una transacción es una interacción con una estructura de datos compleja, compuesta por varios procesos que se han de aplicar uno después del otro.


Ejemplos

La transferencia de fondos entre dos cuentas corrientes de un bancoSi queremos transferirsupongamos 5000€ dela cuenta corriente de A y B y las cuentas tienenrespectivamente20000€ y 0€ de saldo los pasos lógicos serían:
  1. Comprobar si en la cuenta A hay dinero suficiente.
  2. Restar 5000€ de la cuenta de Acon lo que su saldo pasa a ser de 15000€.
  3. Sumar 5000€ a la cuenta de Bcon lo que los saldos quedan A15000€ y B5000
Ahora biensi entre el paso 2 y el 3 el sistema sufre una parada o error inesperado las cuentas quedarían como A15000 y B0 con lo cual se han volatilizado 5000€ y presumiblemente ni A ni B estarán contentosy hubiesen preferido que la transacción nunca hubiese sido iniciada.
Este ejemplo ilustra por qué las transacciones tienen un comportamiento deseado de Todo o nadao se realiza completamente o no debe tener ningún efecto.

Savepoint

es una forma de implementar subtransacciones (también conocidas como transacciones anidadas) dentro de un sistema de gestor de base de datos transaccional indicando un punto dentro de una transacción de base de datos que puede ser restaurada sin afectar a cualquier trabajo realizado en la transacción antes de que el punto de recuperación fuera creado. Pueden existir varios puntos de recuperación dentro de una transacción individual.

Ejemplo

BEGIN TRAN UPDATE Clientes SET Estado = 'Inactivo' WHERE iddepartamento = 1020 UPDATE Clientes SET Estado = 'De Baja' WHERE iddepartamento=7025 SAVE TRANSACTION Punto1 -- Guardamos la transacción (Savepoint) UPDATE Clientes SET Descripcion = 'Ninguna' WHERE idcliente=5896 -- Este ROLLBACK afecta solo a las instrucciones posteriores al savepoint Punto 1. ROLLBACK TRANSACTION Punto 1 -- Confirmamos la transacción COMMIT


Acid en una transacción
En bases de datos se denomina ACID a las características de los parámetros que permiten clasificar las transacciones de los sistemas de gestión de las bases de datos. Cuando se dice que es ACID compliant se indica -en diversos grados- que éste permite realizar transacciones.
En concreto ACID es un acrónimo de Atomicity, Consistency, Isolation and Durability: Atomicidad, Consistencia, Aislamiento y Durabilidad en español.

Ejemplo:






Atomicidad
La Atomicidad requiere que cada transacción sea "todo o nada": si una parte de la transacción falla, todas las operaciones de la transacción fallan, y por lo tanto la base de datos no sufre cambios. Un sistema atómico tiene que garantizar la atomicidad en cualquier operación y situación, incluyendo fallas de alimentación eléctrica, errores y caídas del sistema.
Consistencia
La propiedad de Consistencia se asegura que cualquier transacción llevará a la base de datos de un estado válido a otro estado válido. Cualquier dato que se escriba en la base de datos tiene que ser válido de acuerdo a todas las reglas definidas, incluyendo (pero no limitado a) los constraints, los cascades, los triggers, y cualquier combinación de estos.
aIslamiento
El aislamiento ("Isolation" en inglés) se asegura que la ejecución concurrente de las transacciones resulte en un estado del sistema que se obtendría si estas transacciones fueran ejecutadas una atrás de otra. Cada transacción debe ejecutarse en aislamiento total; por ejemplo, si T1 y T2 se ejecutan concurrentemente, luego cada una debe mantenerse independiente de la otra.
Durabilidad
La durabilidad significa que una vez que se confirmó una transacción (commit), quedará persistida, incluso ante eventos como pérdida de alimentación eléctrica, errores y caídas del sistema. Por ejemplo, en las bases de datos relacionales, una vez que se ejecuta un grupo de sentencias SQL, los resultados tienen que almacenarse inmediatamente (incluso si la base de datos se cae inmediatamente luego).


Begin

 es una palabra clave que permite indicar en el editor de métodos el inicio de una secuencia de comandos SQL que debe ser interpretada por la fuente de datos actual del proceso (el motor SQL integrado de 4D o toda fuente especificada vía el comando SQL LOGIN).
Ejemplos

USE AdventureWorks2012; GO BEGIN TRANSACTION; GO IF @@TRANCOUNT = 0 BEGIN SELECT FirstName, MiddleName FROM Person.Person WHERE LastName = 'Adams'; ROLLBACK TRANSACTION; PRINT N'Rolling back the transaction two times would cause an error.'; END; ROLLBACK TRANSACTION; PRINT N'Rolled back the transaction.'; GO /* Rolled back the transaction. */













Comentarios

Entradas populares de este blog

Creación de usuarios en SQL Server