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

Transaction Control Language (TCL) Commands - COMMIT, ROLLBACK, SAVEPOINT in SQL


Transaction Control Language (TCL) commands are used to manage the changes made by DML (Data Manipulation Language) commands such as INSERT, UPDATE, and DELETE in SQL. These commands help control the transaction's behavior by ensuring data integrity and consistency. The main TCL commands are COMMIT, ROLLBACK, and SAVEPOINT. In this article, we will explore each of these commands with examples.

What is a Transaction?

A transaction is a sequence of one or more SQL operations that are executed as a single unit. A transaction ensures that all operations within it are completed successfully, or none of them are applied to the database. This is known as the ACID properties of transactions: Atomicity, Consistency, Isolation, and Durability.

COMMIT Command

The COMMIT command is used to save all changes made during the current transaction to the database permanently. Once a transaction is committed, the changes cannot be undone, and they become visible to other users.

Syntax:

        COMMIT;
    

Example:

        BEGIN TRANSACTION;

        INSERT INTO Employees (EmployeeID, Name, Position, Salary)
        VALUES (101, 'John Doe', 'Manager', 5000);

        UPDATE Employees
        SET Salary = 5500
        WHERE EmployeeID = 101;

        COMMIT;
    

In this example, we first insert a new record into the Employees table and then update the salary of the employee. After executing both operations, the COMMIT command is used to save these changes permanently to the database.

ROLLBACK Command

The ROLLBACK command is used to undo the changes made during the current transaction. If there is an error or if you want to cancel the transaction for any reason, you can use ROLLBACK to revert the database to its state before the transaction began.

Syntax:

        ROLLBACK;
    

Example:

        BEGIN TRANSACTION;

        INSERT INTO Employees (EmployeeID, Name, Position, Salary)
        VALUES (102, 'Jane Smith', 'Developer', 4000);

        UPDATE Employees
        SET Salary = 4200
        WHERE EmployeeID = 102;

        ROLLBACK;
    

In this example, even though we insert a new employee and update their salary, the ROLLBACK command is used to undo both changes, meaning no changes will be saved to the database.

SAVEPOINT Command

The SAVEPOINT command is used to set a point within a transaction to which you can later roll back. This allows for more granular control within a transaction, letting you undo only part of the transaction rather than the entire set of operations.

Syntax:

        SAVEPOINT savepoint_name;
    

Example:

        BEGIN TRANSACTION;

        INSERT INTO Employees (EmployeeID, Name, Position, Salary)
        VALUES (103, 'Alice Brown', 'Designer', 4500);

        SAVEPOINT AfterFirstInsert;

        INSERT INTO Employees (EmployeeID, Name, Position, Salary)
        VALUES (104, 'Bob Green', 'Developer', 4000);

        ROLLBACK TO SAVEPOINT AfterFirstInsert;

        COMMIT;
    

In this example, we create a savepoint called AfterFirstInsert after the first insert operation. If we decide to roll back only the second insert operation (inserting Bob Green), we can use ROLLBACK TO SAVEPOINT to undo just that part of the transaction while keeping the first insert intact. The COMMIT command is used to save the changes after rolling back to the savepoint.

Combining COMMIT, ROLLBACK, and SAVEPOINT

It is possible to combine the COMMIT, ROLLBACK, and SAVEPOINT commands in a single transaction. This allows for a flexible transaction flow with the ability to make changes, save partial results, and roll back when necessary.

        BEGIN TRANSACTION;

        INSERT INTO Employees (EmployeeID, Name, Position, Salary)
        VALUES (105, 'Tom White', 'Tester', 3500);

        SAVEPOINT FirstSavePoint;

        UPDATE Employees
        SET Salary = 3800
        WHERE EmployeeID = 105;

        -- Simulate an error or decision to rollback to the first savepoint
        ROLLBACK TO SAVEPOINT FirstSavePoint;

        COMMIT;
    

In this example, we first insert a record for 'Tom White' and then create a savepoint. After updating the salary, we decide to roll back to the savepoint, which means only the insert operation will be kept, and the update will be discarded. Finally, we commit the transaction to save the changes.

Conclusion

Transaction Control Language (TCL) commands are crucial for managing the state of transactions in SQL. They provide mechanisms to ensure data consistency and integrity. The COMMIT command saves changes permanently, ROLLBACK undoes changes, and SAVEPOINT provides a way to set a point within a transaction that you can roll back to. By using these commands effectively, you can ensure that your database transactions are both reliable and efficient.



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