Home Python C Language C ++ HTML 5 CSS Javascript Java Kotlin SQL DJango Bootstrap React.js R C# PHP ASP.Net Numpy Dart Pandas Digital Marketing

ACID Properties of Transactions in SQL


ACID is an acronym that stands for Atomicity, Consistency, Isolation, and Durability. These are the four key properties of a database transaction that ensure data integrity, accuracy, and reliability during transaction processing. In SQL, the ACID properties are crucial to maintain the consistency and correctness of the database when multiple transactions are executed concurrently.

What is a Transaction?

A transaction is a sequence of one or more SQL operations executed as a single unit. A transaction could consist of commands like INSERT, UPDATE, DELETE, or SELECT. The goal of a transaction is to perform a series of operations in a way that ensures the database is always in a consistent state. The ACID properties govern how transactions interact with each other to ensure this consistency.

1. Atomicity

Atomicity ensures that a transaction is treated as a single "unit," which either fully completes or fully fails. If any part of the transaction fails, the entire transaction is rolled back, and no changes are made to the database. This guarantees that the database remains in a consistent state, even if errors occur during a transaction.

Example:

        BEGIN TRANSACTION;

        -- Insert a new record into the Employees table
        INSERT INTO Employees (EmployeeID, Name, Position, Salary)
        VALUES (101, 'John Doe', 'Manager', 5000);

        -- Update the Salary of an employee
        UPDATE Employees
        SET Salary = 5500
        WHERE EmployeeID = 101;

        -- Simulate an error (for example, trying to update a non-existent record)
        UPDATE Employees
        SET Salary = 6000
        WHERE EmployeeID = 999;  -- This record doesn't exist

        -- If an error occurs, the transaction is rolled back
        COMMIT;  -- This will not be executed if there is an error
    

If an error occurs during the UPDATE on EmployeeID 999 (which does not exist), the entire transaction will be rolled back, and no changes will be applied to the Employees table.

2. Consistency

Consistency ensures that a transaction takes the database from one consistent state to another. After a transaction is completed, the database should remain in a valid state, with all constraints, rules, and triggers applied. If a transaction violates any rules or constraints, the transaction will not be allowed to complete, and the database will revert to its original state.

Example:

        BEGIN TRANSACTION;

        -- Insert a new employee with a salary that violates the company's minimum salary rule
        INSERT INTO Employees (EmployeeID, Name, Position, Salary)
        VALUES (102, 'Jane Smith', 'Developer', 200);

        -- The database will reject this transaction if a minimum salary constraint exists
        COMMIT;  -- The transaction will fail due to constraint violation
    

In this example, if there is a constraint on the Salary column that ensures employees cannot earn less than a certain amount, the transaction will fail, and the database will remain in its previous consistent state.

3. Isolation

Isolation ensures that transactions are executed independently of each other, even if they are running concurrently. This means that the intermediate state of a transaction is not visible to other transactions until it is committed. Isolation prevents issues like dirty reads, non-repeatable reads, and phantom reads, where transactions interfere with each other.

Example:

        -- Transaction 1: Update Employee Salary
        BEGIN TRANSACTION;
        UPDATE Employees SET Salary = 7000 WHERE EmployeeID = 101;
        COMMIT;

        -- Transaction 2: Read the updated Salary (Isolation ensures no interference)
        BEGIN TRANSACTION;
        SELECT Salary FROM Employees WHERE EmployeeID = 101;
        COMMIT;
    

In this example, Transaction 2 will not see the updated salary until Transaction 1 has been committed. If Transaction 1 is still running and has not committed yet, Transaction 2 will not read any uncommitted changes, ensuring that it only sees fully committed data.

4. Durability

Durability guarantees that once a transaction is committed, its changes are permanent and will survive any system failures, such as power outages or crashes. The changes made by a committed transaction are written to non-volatile storage, ensuring that the database can be restored to its most recent state after a failure.

Example:

        BEGIN TRANSACTION;

        -- Insert a new record into the Employees table
        INSERT INTO Employees (EmployeeID, Name, Position, Salary)
        VALUES (103, 'Alice Johnson', 'Designer', 4500);

        COMMIT;
    

After the COMMIT command is issued, even if the system crashes immediately afterward, the insertion of 'Alice Johnson' into the Employees table will be durable and will not be lost, as it has been written to the database.

ACID and Real-Life Scenarios

Consider a real-world banking application. Imagine a transaction where $100 is transferred from one account to another. The transaction must adhere to ACID properties to ensure accuracy:

Conclusion

The ACID properties (Atomicity, Consistency, Isolation, and Durability) are critical to ensuring that database transactions are processed reliably and consistently. They guarantee that the database maintains integrity, even in the face of errors, system crashes, or concurrent transactions. Understanding these properties is fundamental to working with SQL and maintaining a robust database system.



Advertisement

Advertisement

Advertisement





Q3 Schools : India


Online Complier

HTML 5

Python

java

C++

C

JavaScript

Website Development

HTML

CSS

JavaScript

Python

SQL

Campus Learning

C

C#

java