English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
TRANSACTION (transacción) es una unidad lógica del proceso de ejecución del sistema de gestión de bases de datos, constituida por una secuencia limitada de operaciones de base de datos.
Las transacciones de bases de datos generalmente contienen una secuencia de lecturas a la base de datos/Operaciones de escritura. Incluye los siguientes dos objetivos:
Proporciona un método para recuperar una secuencia de operaciones de base de datos de un estado de fallo a un estado normal, al mismo tiempo que proporciona un método para que la base de datos mantenga la consistencia incluso en estados anormales.
Cuando múltiples aplicaciones acceden a la base de datos de manera concurrente, se puede proporcionar un método de aislamiento entre estas aplicaciones para evitar que sus operaciones se interrumpan mutuamente.
Cuando una transacción se presenta al sistema de gestión de bases de datos (DBMS), el DBMS debe garantizar que todas las operaciones en la transacción se completen con éxito y sus resultados se guarden permanentemente en la base de datos, si alguna operación en la transacción no se completa con éxito, todas las operaciones en la transacción deben revertirse al estado anterior a la ejecución de la transacción; al mismo tiempo, la transacción no afecta a otras transacciones ni a la ejecución de la base de datos, todas las transacciones parecen ejecutarse de manera independiente.
Las transacciones tienen las siguientes cuatro propiedades estándar, que generalmente se abrevian como ACID:
Atomicidad (Atomicidad): Una transacción se ejecuta como un todo, y todas las operaciones en su interior se ejecutan o no se ejecutan.
Consistencia (Consistencia): Una transacción debe garantizar que el estado de la base de datos cambie de un estado consistente a otro estado consistente. El significado de un estado consistente es que los datos en la base de datos deben cumplir con las restricciones de integridad.
Aislamiento (Isolación): Cuando se ejecutan múltiples transacciones concurrentemente, la ejecución de una transacción no debe afectar la ejecución de otras transacciones.
Persistencia (Durabilidad): Las modificaciones realizadas en la base de datos por una transacción ya confirmada deben permanecer permanentemente en la base de datos.
Alguien tiene que usar moneda electrónica para comprar en la tienda10Algo de 0 yuanes, que incluye al menos dos operaciones:
Cuenta de persona disminuida 100 yuanes.
Cuenta de tienda aumentada100 yuanes.
Un sistema de gestión de bases de datos que admite transacciones debe garantizar que ambas operaciones (todo el "proceso de transacción") se completen o se cancele juntas, de lo contrario, se producirá 10Circunstancias en las que 0 yuanes desaparecen o aparecen sin razón.
Se utiliza el siguiente comando para controlar las transacciones:
BEGIN TRANSACTION:Inicio de una transacción.
COMMIT:Confirmación de transacción, o se puede usar la orden END TRANSACTION.
ROLLBACK:Reversión de transacción.
Los comandos de control de transacción solo se utilizan con INSERT, UPDATE y DELETE. No se pueden usar en la creación o eliminación de tablas, ya que estas operaciones se realizan automáticamente en la base de datos.
Las transacciones se pueden iniciar con la orden BEGIN TRANSACTION o simplemente con la orden BEGIN. Este tipo de transacciones generalmente se ejecuta hasta que se encuentra el siguiente comando COMMIT o ROLLBACK. Sin embargo, cuando se cierra la base de datos o ocurre un error, el manejo de transacciones también se revertirá. A continuación, se muestra la sintaxis simple para iniciar una transacción:
BEGIN; o BEGIN TRANSACTION;
El comando COMMIT se utiliza para guardar los cambios realizados por la transacción en la base de datos, es decir, confirmar la transacción.
La sintaxis del comando COMMIT es la siguiente:
COMMIT; o END TRANSACTION;
El comando ROLLBACK se utiliza para deshacer los comandos de transacción no guardados en la base de datos, es decir, deshacer la transacción.
La sintaxis del comando ROLLBACK es la siguiente:
ROLLBACK;
Crear la tabla COMPANY (Descargar el archivo SQL de COMPANY ),los datos del contenido son los siguientes:
w3codeboxdb# select * from COMPANY; id | name | age | address | salary ----+-------+-----+-----------+-------- 1 | Paul | 32 | California| 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall| 45000 7 | James | 24 | Houston | 10000 (7 rows)
Ahora, comencemos una transacción y eliminemos age = 25 del registro, finalmente, usamos el comando ROLLBACK para deshacer todos los cambios.
w3codeboxdb=# BEGIN; DELETE FROM COMPANY WHERE AGE = 25; ROLLBACK;
Verificar la tabla COMPANY, aún hay los siguientes registros:
id | name | age | address | salary ----+-------+-----+-----------+-------- 1 | Paul | 32 | California| 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall| 45000 7 | James | 24 | Houston | 10000
Ahora, comencemos otra transacción, eliminando age = 25 del registro, finalmente usamos el comando COMMIT para submitir todos los cambios.
w3codeboxdb=# BEGIN; DELETE FROM COMPANY WHERE AGE = 25; COMMIT;
Verificar la tabla COMPANY, los registros han sido eliminados:
id | name | age | address | salary ----+-------+-----+------------+-------- 1 | Paul | 32 | California | 20000 3 | Teddy | 23 | Norway | 20000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall | 45000 7 | James | 24 | Houston | 10000 (5 rows)