database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 29593 게시물 읽기
No. 29593
autocommit=0일경우..
작성자
정대원(todream)
작성일
2010-03-23 11:39
조회수
7,829

5.x innodb사용중입니다.

트랜잭션을 사용할일이 있어서.

start transaction

rollback

commit

사용해 트랜잭션을 사용중입니다.

 

근데 autocommit 환경변수가 기본 1이었는데. 트랜잭션이 먹습니다.

set autocommit=0;
insert into mylist_info (uid, bid, group_id) values (2,1,555);
이럴경우 commit 를 해주기 전까지  위 데이터가 입력이 되지 않아야 하는거 아닌가요?

set autocommit=1 이면데이터가 자동 들어가는걸로 알고있는데..

 

그리고 start transaction;
insert into mylist_info (uid, bid, group_id) values (2,1,555);
rollback or commit;
 

요런식으로 할경우 set autocommit의 값과는 상관없이 트랜잭션이 올바로 수행되는군요.

제가 set autocommit의미를 잘못알고 있는지것인지 도움좀 부탁드립니다.ㅠ.

이 글에 대한 댓글이 총 2건 있습니다.

 일단 START TRANSACTION (또는 BEGIN)을 수행하면, 세션 단위로 설정되어 있는 autocommit 값이 보존(무시)됩니다. 즉, autocommit의 값이 0이던 1이던 관계 없이 해당 커넥션의 작업은 트랜잭셔널하게 실행됩니다. COMMIT이나 ROLLBACK 하게 되면 기존의 autocommit 값이 복원됩니다.

 

즉, autocommit은 명시적으로 START TRASACTION/BEGIN을 하지 않는 경우에만 적용되는 값입니다.

 

적어주신 예에서, SET autocommit=0 이후에 INSERT 했을 때, 값이 입력된 것처럼 보이는 것은, 트랜잭션을 수행중인 커넥션에서만 'multi-versioning'이 수행되며 나타나는 정상적인 현상입니다. 다른 커넥션으로 들어가셔서 SELECT 해보시면, 값이 추가되어 있지 않음을 확인하실 수 있습니다.

 

 

박현우(lqez)님이 2010-03-23 12:01에 작성한 댓글입니다.

답변 감사드립니다. ^^;

테스트를 해보니. 명확해지는군요.

set autocommit=0;

insert into....

해보고 다른세션에서 select를 해보니. 값이 추출되지 않는군요.

근데 insert into.. 후 set autocommit=1을 다시 적용하니

commit이 되는군요.

조언 감사드립니다.

정대원님이 2010-03-23 13:16에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
29596DB 통합 관련 문의 [2]
아시아코치
2010-03-24
7048
29595쿼리 질문드립니다..ㅜㅜ [1]
eyecandy
2010-03-24
6669
29594간단한 조인 쿼리문좀 알려주세요 ㅠㅠ [2]
Deck
2010-03-23
6846
29593autocommit=0일경우.. [2]
정대원
2010-03-23
7829
29592고수님들 일자가 필드로된 쿼리좀 봐주세요 [1]
김길동
2010-03-22
6698
29591mysql 이 아무 이유없이 느려졌을때 [1]
이하사
2010-03-22
8224
29590사원별 쿼리문좀 보아주셔요 [2]
글쓴이
2010-03-18
6575
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.021초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다