: 하나의 작업을 하기위한 명령어 묶음 단위
- 하나의 트랜잭션에서 실행하는 모든 명령어가 모두 완료되어야 = 전체가 완료되는 형태
- 만약, 하나라도 작업이 취소된다면 모두 취소 (성공-성공-실패-성공 = 실패)
- 명령을 모두 받아보고 나중에 결정하는 개념
- 임시 실행한다는 개념 (결과를 임시 저장=미리해보기)
- update, delete 에서 테스트 확인용으로 사용!
트랜잭션 transaction 생성
Start transaction
명령어 1;
명령어 2;
...
commit ; / rollback ;
- commit : 작업 반영
- rollback : 작업 취소
- DB에서 JAVA로 받아 조건을 달아서 사용
- JAVA에서 if ( ... == commit )으로 사용
commit 그대로 실행 사용시
mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into buy(customer, product_name, price, amount)
-> select '다래', name, price, 3 from product
-> where num = 1;
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> insert into buy(customer, product_name, price, amount)
-> select '졸려', name, price, 5 from product
-> where num = 3;
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> select * from buy;
+-----+----------+-------------------+-------+--------+---------------------+
| num | customer | product_name | price | amount | buy_date |
+-----+----------+-------------------+-------+--------+---------------------+
| 1 | 홍길동 | 폴라티셔츠 | 15000 | 3 | 2023-03-24 17:22:02 |
| 2 | 홍길순 | 에어나시 | 9000 | 5 | 2023-03-24 17:22:02 |
| 3 | 이순신 | 양털 겨울 코트 | 50000 | 1 | 2023-03-24 17:22:02 |
| 5 | 동글님 | 순면라운드 반팔티 | 15900 | 3 | 2023-03-27 09:44:58 |
| 6 | 다래 | 순면라운드 반팔티 | 15900 | 3 | 2023-03-27 09:48:31 |
| 7 | 다래 | 폴라티셔츠 | 15000 | 3 | 2023-03-27 10:32:45 |
| 8 | 졸려 | 순면라운드 반팔티 | 15900 | 5 | 2023-03-27 10:33:14 |
+-----+----------+-------------------+-------+--------+---------------------+
7 rows in set (0.00 sec)
mysql> commit; //확인
Query OK, 0 rows affected (0.00 sec)
mysql> select * from buy;
+-----+----------+-------------------+-------+--------+---------------------+
| num | customer | product_name | price | amount | buy_date |
+-----+----------+-------------------+-------+--------+---------------------+
| 1 | 홍길동 | 폴라티셔츠 | 15000 | 3 | 2023-03-24 17:22:02 |
| 2 | 홍길순 | 에어나시 | 9000 | 5 | 2023-03-24 17:22:02 |
| 3 | 이순신 | 양털 겨울 코트 | 50000 | 1 | 2023-03-24 17:22:02 |
| 5 | 동글님 | 순면라운드 반팔티 | 15900 | 3 | 2023-03-27 09:44:58 |
| 6 | 다래 | 순면라운드 반팔티 | 15900 | 3 | 2023-03-27 09:48:31 |
| 7 | 다래 | 폴라티셔츠 | 15000 | 3 | 2023-03-27 10:32:45 |
| 8 | 졸려 | 순면라운드 반팔티 | 15900 | 5 | 2023-03-27 10:33:14 |
+-----+----------+-------------------+-------+--------+---------------------+
7 rows in set (0.00 sec)
rollback 되돌아가기 사용시
mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into buy(customer, product_name, price, amount)
-> select '으각', name, price, 2 from product
-> where num = 1;
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> select * from buy;
+-----+----------+-------------------+-------+--------+---------------------+
| num | customer | product_name | price | amount | buy_date |
+-----+----------+-------------------+-------+--------+---------------------+
| 1 | 홍길동 | 폴라티셔츠 | 15000 | 3 | 2023-03-24 17:22:02 |
| 2 | 홍길순 | 에어나시 | 9000 | 5 | 2023-03-24 17:22:02 |
| 3 | 이순신 | 양털 겨울 코트 | 50000 | 1 | 2023-03-24 17:22:02 |
| 5 | 동글님 | 순면라운드 반팔티 | 15900 | 3 | 2023-03-27 09:44:58 |
| 6 | 다래 | 순면라운드 반팔티 | 15900 | 3 | 2023-03-27 09:48:31 |
| 7 | 다래 | 폴라티셔츠 | 15000 | 3 | 2023-03-27 10:32:45 |
| 8 | 졸려 | 순면라운드 반팔티 | 15900 | 5 | 2023-03-27 10:33:14 |
| 10 | 으각 | 폴라티셔츠 | 15000 | 2 | 2023-03-27 10:37:06 |
+-----+----------+-------------------+-------+--------+---------------------+
8 rows in set (0.00 sec)
mysql> rollback;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from buy;
+-----+----------+-------------------+-------+--------+---------------------+
| num | customer | product_name | price | amount | buy_date |
+-----+----------+-------------------+-------+--------+---------------------+
| 1 | 홍길동 | 폴라티셔츠 | 15000 | 3 | 2023-03-24 17:22:02 |
| 2 | 홍길순 | 에어나시 | 9000 | 5 | 2023-03-24 17:22:02 |
| 3 | 이순신 | 양털 겨울 코트 | 50000 | 1 | 2023-03-24 17:22:02 |
| 5 | 동글님 | 순면라운드 반팔티 | 15900 | 3 | 2023-03-27 09:44:58 |
| 6 | 다래 | 순면라운드 반팔티 | 15900 | 3 | 2023-03-27 09:48:31 |
| 7 | 다래 | 폴라티셔츠 | 15000 | 3 | 2023-03-27 10:32:45 |
| 8 | 졸려 | 순면라운드 반팔티 | 15900 | 5 | 2023-03-27 10:33:14 |
+-----+----------+-------------------+-------+--------+---------------------+
7 rows in set (0.00 sec)
'DB > 명령프롬프트 - mysql' 카테고리의 다른 글
[MySQL] SQL 내장함수 : 날짜함수 (0) | 2023.03.27 |
---|---|
[MySQL] SQL 내장함수 : 숫자함수 (0) | 2023.03.27 |
[MySQL] 타 테이블의 값을 현재 테이블에 삽입하기 (0) | 2023.03.27 |
[MySQL] 연산자 Operator (0) | 2023.03.27 |
[MySQL] Database 생성, 사용 create, use (0) | 2023.03.27 |