Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 ROLLBACK으로 현재 트랜잭션의 변경 사항을 영구적으로 되돌리는 방법

MySQL에서는 ROLLBACK 명령을 사용하여 현재 트랜잭션에서 수행한 변경 사항을 데이터베이스에 영구적으로 반영하지 않고 되돌릴 수 있습니다. 예를 들어 DML 문(INSERT, UPDATE, DELETE 등)을 실행해 일부 데이터 객체가 변경된 상태라면, ROLLBACK 명령을 실행하는 순간 해당 변경 내용은 데이터베이스에서 완전히 제거되고 트랜잭션 시작 이전의 상태로 돌아갑니다.

예제

다음과 같이 'marks' 테이블에 데이터가 저장되어 있다고 가정하고, 트랜잭션을 시작한 뒤 ROLLBACK 명령을 실행해 보겠습니다.

mysql> SELECT * FROM Marks;
+------+---------+---------+-------+
| Id   | Name    | Subject | Marks |
+------+---------+---------+-------+
|  1   | Aarav   | Maths   |  50   |
|  2   | Harshit | Maths   |  55   |
+------+---------+---------+-------+
2 rows in set (0.00 sec)

mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO Marks Values(3, 'Rahul','History',40);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO Marks Values(4, 'Yashraj','English',48);
Query OK, 1 row affected (0.00 sec)

mysql> ROLLBACK;
Query OK, 0 rows affected (0.04 sec)

위 예제에서 ROLLBACK 문은 트랜잭션을 명시적으로 종료하며, 트랜잭션 안에서 수행했던 INSERT 작업(새로운 행 두 개 추가)은 모두 취소됩니다. 즉, 변경 사항이 데이터베이스에 영구적으로 반영되지 않고 사라집니다.

mysql> SELECT * FROM Marks;
+------+---------+---------+-------+
| Id   | Name    | Subject | Marks |
+------+---------+---------+-------+
|  1   | Aarav   | Maths   |  50   |
|  2   | Harshit | Maths   |  55   |
+------+---------+---------+-------+
2 rows in set (0.00 sec)

결과를 확인해 보면 ROLLBACK 실행 후 테이블에는 처음의 두 행만 남아 있으며, 트랜잭션 중에 삽입했던 Rahul과 Yashraj의 데이터는 완전히 사라진 것을 알 수 있습니다. 이처럼 ROLLBACK은 실수로 인한 데이터 변경을 되돌려야 할 때 유용하게 활용할 수 있는 강력한 트랜잭션 제어 명령입니다.