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

MySQL COMMIT 명령어로 트랜잭션 변경 사항을 영구적으로 저장하는 방법

MySQL에서 현재 트랜잭션 내에서 수행한 변경 사항을 데이터베이스에 영구적으로 기록하려면 COMMIT 명령어를 사용합니다. 트랜잭션이 시작된 상태에서 INSERT, UPDATE, DELETE와 같은 DML 문을 실행하면 그 결과는 아직 임시 상태로 유지됩니다. 이때 COMMIT을 실행해야만 해당 변경 사항이 데이터베이스에 확정되어 영구적으로 반영됩니다.

COMMIT 동작 예시

아래 예제는 트랜잭션을 시작한 뒤 두 개의 데이터를 삽입하고, COMMIT으로 변경 사항을 확정하는 과정을 보여줍니다.

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

mysql> INSERT INTO Marks Values(1, 'Aarav','Maths',50);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO Marks Values(2, 'Harshit','Maths',55);
Query OK, 1 row affected (0.00 sec)

mysql> COMMIT;
Query OK, 0 rows affected (0.06 sec)

위 예제에서 COMMIT 문은 트랜잭션을 명시적으로 종료하며, 그동안 수행된 모든 변경 사항(두 개의 INSERT)이 데이터베이스에 영구적으로 저장됩니다.

저장 결과 확인

COMMIT 이후 테이블을 조회하면 삽입된 데이터가 정상적으로 반영된 것을 확인할 수 있습니다.

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

참고: COMMIT과 ROLLBACK의 차이

COMMIT은 변경 사항을 확정하는 반면, ROLLBACK은 커밋되지 않은 변경 사항을 모두 취소하고 트랜잭션 시작 전 상태로 되돌립니다. 또한 MySQL은 기본적으로 autocommit 모드가 활성화되어 있어, 별도로 트랜잭션을 시작하지 않으면 각 SQL 문이 실행될 때마다 자동으로 커밋됩니다. 따라서 여러 작업을 하나의 단위로 묶어 제어하고 싶다면 START TRANSACTION으로 트랜잭션을 명시적으로 시작한 후, 작업이 완료되었을 때 COMMIT을 실행하는 것이 좋습니다.