Atomicidad
Atomicidad en SQL se refiere a una de las propiedades ACID, que garantiza el uso de transacciones al consultar datos mediante SQL.
En el contexto de bases de datos SQL, la atomicidad asegura que todas las operaciones dentro de una unidad lógica particular se completen, o ninguna de ellas lo haga.
Procesamiento de transacciones en SQL
Características clave
-
Rollback: Si alguna parte falla (por ejemplo, debido a un error o violación de restricción), toda la transacción se revierte, deshaciendo los cambios;
-
Commit: Si todas las operaciones tienen éxito, la transacción se confirma, haciendo los cambios permanentes.
Creación de transacciones en SQL
En SQL, cada instrucción individual se considera una transacción.
Sin embargo, se pueden crear transacciones manualmente que contengan más de una instrucción.
Imaginemos un escenario donde existen dos tablas:
-
la tabla
BankAccounts
, que incluye las siguientes columnas:account_number
(Primary Key),account_holder
ybalance
; -
la tabla
UserLogs
con columnas:account_number
,action
,timestamp
, etc. La combinación deaccount_number
ytimestamp
es una clave primaria compuesta de esta relación.
Ahora, consideremos un escenario en el que se pretende crear una nueva cuenta bancaria y, de manera concurrente, generar una entrada de registro para indicar la adición de la nueva cuenta.
Es fundamental que estas dos acciones, agregar la cuenta y registrar el evento, sean tratadas como una sola unidad lógica y deben estar incluidas en una única transacción. A continuación, se muestra un ejemplo muy básico de cómo podríamos hacer esto con una transacción:
-- Begin the transaction
BEGIN;
-- Insert a new bank account with account number 109, account holder Emma Watson, and initial balance of 0
INSERT INTO BankAccounts (account_number, account_holder, balance)
VALUES (109, 'Emma Watson', 0);
-- Step 2: Add log entry if the account was added
-- Insert a log entry into the UserLogs table indicating that a new account was added with account number 109
INSERT INTO UserLogs (account_number, action)
VALUES (109, 'New account added');
-- Commit the transaction, making the changes permanent
COMMIT;
En la consulta anterior, utilizamos el bloque BEGIN
para indicar que todas las sentencias siguientes deben considerarse como una sola unidad; si una de ellas no se ejecuta, ninguna de las sentencias debe ejecutarse.
La palabra clave COMMIT
indica el final del bloque de la transacción.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 4.35
Atomicidad
Desliza para mostrar el menú
Atomicidad en SQL se refiere a una de las propiedades ACID, que garantiza el uso de transacciones al consultar datos mediante SQL.
En el contexto de bases de datos SQL, la atomicidad asegura que todas las operaciones dentro de una unidad lógica particular se completen, o ninguna de ellas lo haga.
Procesamiento de transacciones en SQL
Características clave
-
Rollback: Si alguna parte falla (por ejemplo, debido a un error o violación de restricción), toda la transacción se revierte, deshaciendo los cambios;
-
Commit: Si todas las operaciones tienen éxito, la transacción se confirma, haciendo los cambios permanentes.
Creación de transacciones en SQL
En SQL, cada instrucción individual se considera una transacción.
Sin embargo, se pueden crear transacciones manualmente que contengan más de una instrucción.
Imaginemos un escenario donde existen dos tablas:
-
la tabla
BankAccounts
, que incluye las siguientes columnas:account_number
(Primary Key),account_holder
ybalance
; -
la tabla
UserLogs
con columnas:account_number
,action
,timestamp
, etc. La combinación deaccount_number
ytimestamp
es una clave primaria compuesta de esta relación.
Ahora, consideremos un escenario en el que se pretende crear una nueva cuenta bancaria y, de manera concurrente, generar una entrada de registro para indicar la adición de la nueva cuenta.
Es fundamental que estas dos acciones, agregar la cuenta y registrar el evento, sean tratadas como una sola unidad lógica y deben estar incluidas en una única transacción. A continuación, se muestra un ejemplo muy básico de cómo podríamos hacer esto con una transacción:
-- Begin the transaction
BEGIN;
-- Insert a new bank account with account number 109, account holder Emma Watson, and initial balance of 0
INSERT INTO BankAccounts (account_number, account_holder, balance)
VALUES (109, 'Emma Watson', 0);
-- Step 2: Add log entry if the account was added
-- Insert a log entry into the UserLogs table indicating that a new account was added with account number 109
INSERT INTO UserLogs (account_number, action)
VALUES (109, 'New account added');
-- Commit the transaction, making the changes permanent
COMMIT;
En la consulta anterior, utilizamos el bloque BEGIN
para indicar que todas las sentencias siguientes deben considerarse como una sola unidad; si una de ellas no se ejecuta, ninguna de las sentencias debe ejecutarse.
La palabra clave COMMIT
indica el final del bloque de la transacción.
¡Gracias por tus comentarios!