PostgreSQL: transacciones

La Transacción no es una palabra nueva que estamos escuchando. Escuchamos esa palabra muchas veces como «Transacción en efectivo». Los bancos generalmente manejan efectivo, es decir, envían o reciben efectivo, por lo que acuñamos el término como una transacción en efectivo. Así que simplemente la transacción es una unidad de trabajo. En este artículo, vamos a aprender sobre transacciones en el lenguaje de base de datos PostgreSQL. 

Las transacciones son importantes en cualquier lenguaje de base de datos, cada vez que queremos agregar, eliminar y actualizar, las transacciones se utilizan para mantener la integridad de los datos y varias otras razones. Incluso sin las transacciones, podemos agregar, eliminar y actualizar la base de datos, pero hay muchas posibilidades de que los datos se corrijan debido a la pérdida de integridad de los datos.

Propiedades de la Transacción

Ahora veamos las propiedades ACID de una transacción:

  • Atomicidad: esta propiedad garantiza que todas las transacciones estén completas. Sigue la propiedad de todo o nada, es decir, la transacción no debe completarse parcialmente.
  • Coherencia: esta propiedad garantiza que todas las transacciones sean coherentes, es decir, después de confirmar la transacción, esos cambios se actualizan correctamente en la base de datos o no.
  • Aislamiento: cuando se ejecutan dos transacciones, ambas transacciones tendrán su propia privacidad, es decir, una transacción no perturbará a otra transacción.
  • Durabilidad: esta propiedad garantiza que, incluso en el momento de fallas del sistema, los datos comprometidos en la base de datos estén seguros, es decir, de forma permanente.

Comandos en una Transacción

Hay tres comandos principales en un bloque de transacción. Están:

  1. EMPEZAR
  2. COMPROMETERSE
  3. RETROCEDER

Sintaxis general:

BEGIN;

// set of statements

[COMMIT | ROLLBACK];

Ahora comprenderemos la importancia de todos y cada uno de los comandos de control de transacciones, para eso, primero debemos configurar una tabla en la base de datos.

CREATE TABLE BankStatements (
    customer_id serial PRIMARY KEY,
    full_name VARCHAR NOT NULL,
    balance INT
);

Como el esquema de la base de datos está listo ahora, insertaremos algunos valores en él.

INSERT INTO BankStatements (
    customer_id ,
    full_name,
    balance
)
VALUES
    (1, 'Sekhar rao', 1000),
    (2, 'Abishek Yadav', 500),
    (3, 'Srinivas Goud', 1000);

1. COMENZAR

El comando BEGIN se utiliza para iniciar una transacción. Para iniciar una transacción, primero debemos dar el comando BEGIN, si no lo hacemos así, la base de datos no podrá reconocer la transacción.

Ejemplo 1

BEGIN;

 INSERT INTO BankStatements (
     customer_id,
    full_name,
        balance

)
    VALUES(
       4, 'Priya chetri', 500
        )
;
        
COMMIT;

Producción

2. COMPROMETERSE

El comando COMMIT se usa para guardar los cambios y reflejarlos en la base de datos cada vez que mostramos los datos requeridos. Supongamos que actualizamos los datos en la base de datos pero no le dimos COMMIT, entonces los cambios no se reflejan en la base de datos. Para guardar los cambios realizados en una transacción, debemos COMMITAR esa transacción con seguridad.

Ejemplo 2

BEGIN;

    UPDATE BankStatements
        SET balance = balance - 500
        WHERE 
        customer_id = 1;
      

    SELECT customer_id, full_name, balance
        FROM BankStatements;
      
    UPDATE BankStatements
        SET balance = balance + 500
        WHERE 
        customer_id = 2;
 
      
COMMIT;


SELECT customer_id, full_name, balance
    FROM BankStatements;
    

Producción:

3. VOLVER

El comando ROLLBACK se utiliza para deshacer los cambios realizados en las transacciones. Como sabemos, las transacciones en lenguajes de bases de datos se utilizan para grandes cálculos, por ejemplo, en bancos. Supongamos que el empleado del banco incrementó el registro de saldo de la persona equivocada por error, entonces simplemente puede retroceder y volver al estado anterior.

Ejemplo 3

BEGIN;

    DELETE FROM BankStatements
        WHERE 
        customer_id = 1;
      

    SELECT customer_id, full_name, balance
        FROM BankStatements;
      

ROLLBACK;


SELECT customer_id, full_name, balance
    FROM BankStatements;

Producción:

Publicación traducida automáticamente

Artículo escrito por dadimadhav y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *