마짱짱의 지식창고

[SQL] 트렌잭션 이란 ? 본문

DB/SQL

[SQL] 트렌잭션 이란 ?

마짱짱 2020. 4. 14. 11:51
반응형

트랜잭션은 "하나의 논리적 작업 단위로 수행되는 일련의 작업"로 정의할 수 있다.

이 의미에는 "일련의 작업이 전부 되거나, 전부 되지 않거나"의 의미가 포함되어 있다.

 

단순히 이야기하면, "SQL의 묶음"이라고도 할 수 있다.

 

여러 SQL 쿼리문을 트랜잭션으로 묶어 (BEGIN TRAN)

트랜잭션이 성공하면 트랜잭션 동안 이루어진 일련의 작업 결과는 커밋되고 데이터베이스에 영구적으로 반영된다.

(COMMIT TRAN)

트랜잭션에 오류가 발생하여 취소되거나 롤백되면 일련의 작업 내역은 모두 취소된다.

(ROLLBACK TRAN)

 

MariaDB [sql_db]> show variables like 'auto%';      Commit확인하는법
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 1     |
| auto_increment_offset    | 1     |
| autocommit               | ON    |
| automatic_sp_privileges  | ON    |
+--------------------------+-------+

 

MariaDB [sql_db]> set autocommit='off';        *commit 끄는 방법
Query OK, 0 rows affected (0.00 sec)

MariaDB [sql_db]> show variables like 'auto%';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 1     |
| auto_increment_offset    | 1     |
| autocommit               | OFF   |
| automatic_sp_privileges  | ON    |
+--------------------------+-------+

---------------------------------------------------------------------------------------

 

*트랜잭션 시작

MariaDB [sql_db]> start transaction;

  = 같은명령어로 begin work; 있음

 

* 롤백 작업환경

 

MariaDB [sql_db]> delete from user2;       * user2 테이블삭제
Query OK, 10 rows affected (0.00 sec)

MariaDB [sql_db]> select * from user2;     * 확인하니 Empty
Empty set (0.00 sec)

MariaDB [sql_db]> rollback;                     * rollback 명령어 입력
Query OK, 0 rows affected (0.00 sec)

MariaDB [sql_db]> select * from user2;         * 복구완료
+---------+-----------+------------+--------+---------+----------+--------+------------+
| user_id | name      | birth_year | addr   | mobile1 | mobile2  | height | m_date     |
+---------+-----------+------------+--------+---------+----------+--------+------------+
| BBK     | 바비킴    |       1973 | 서울   | 010     | 00000000 |    176 | 2013-05-05 |
| EJW     | 은지원    |       1972 | 경북   | 011     | 88888888 |    174 | 2014-03-03 |
| JKW     | 조관우    |       1965 | 경기   | 018     | 99999999 |    172 | 2010-10-10 |
| JYP     | 조용필    |       1950 | 경기   | 011     | 44445566 |    166 | 2009-04-04 |
| KBS     | 김범수    |       1927 | 경남   | 011     | 22223333 |    173 | 2012-04-04 |
| KKK     | 김경호    |       1971 | 전남   | 019     | 33334444 |    177 | 2007-07-07 |
| LJB     | 임재범    |       1963 | 서울   | 016     | 66666666 |    183 | 2009-09-09 |
| LSG     | 이승기    |       1987 | 서울   | 011     | 11112222 |    182 | 2008-08-08 |
| SSK     | 성시경    |       1979 | 서울   |         |          |    186 | 2013-12-12 |
| YJS     | 윤종신    |       1969 | 경남   |         |          |    170 | 2005-05-05 |
+---------+-----------+------------+--------+---------+----------+--------+------------+
10 rows in set (0.00 sec)

 

 

 

 

반응형

'DB > SQL' 카테고리의 다른 글

[SQL] dbForge Studio  (0) 2020.04.16
[SQL] 계정생성, 관리  (0) 2020.04.14
[SQL] HeidiSQL  (0) 2020.04.09