[mysql] mysql에서의 commit, rollback 처리와 php에서의 transaction 처리 > db

본문 바로가기

db

[mysql] mysql에서의 commit, rollback 처리와 php에서의 transaction 처리

페이지 정보

작성자 서방님 댓글 0건 조회 18회 작성일 11-01-10 13:27

본문

set autocommit=0 begin...commit 사용
begin...rollback 사용
set autocommit=1 commit 사용
rollback 사용
참고로 TRUNCATE TABLE 문는 트랜젝션 처리를 하지 않는다.
삭제된 레코드의 복구가 불가능하다. 즉, rollback이 의미없음

현재의 autocommit 상태를 확인하는 방법은
mysql> set autocommit=0;
mysql> select @@session.autocommit;
@@session.autocommit
0

rollback처리
mysql> INSERT INTO table (column1,column2) VALUES (1,'1');
mysql> BEGIN;
mysql> UPDATE table SET column2 ='4' WHERE column1=1;
mysql> SELECT * FROM table;
column1 column2
1 4
mysql> ROLLBACK;
mysql> SELECT * FROM table;
column1 column2
1 1

commit처리
mysql> BEGIN;
mysql> UPDATE table SET column2 ='10' WHERE column1=1;
mysql> SELECT * FROM table;
column1 column2
1 10
mysql> COMMIT;
mysql> SELECT * FROM table;
column1 column2
1 10


php에서의 트렌젝션 처리예
 
  1. <?   
  2.     // trans.php   
  3.     function begin()    
  4.     {   
  5.         mysql_query("BEGIN");   
  6.     }   
  7.     function commit()   
  8.     {   
  9.         mysql_query("COMMIT");   
  10.     }   
  11.     function rollback()   
  12.     {   
  13.         mysql_query("ROLLBACK");   
  14.     }   
  15.        
  16.     mysql_connect("localhost","username""password") or die(mysql_error());   
  17.     mysql_select_db("test") or die(mysql_error());   
  18.   
  19.     $query = "INSERT INTO trans table (column1,column2)   
  20.            . "values (1,'1')";   
  21.   
  22.     begin(); // transaction begins   
  23.     $result = mysql_query($query);   
  24.     if(!$result)   
  25.     {   
  26.         rollback(); // transaction rolls back   
  27.         echo "you rolled back";   
  28.         exit;   
  29.     }   
  30.     else    
  31.     {   
  32.         commit(); // transaction is committed   
  33.         echo "your insertion was successful";   
  34.     }   
  35. ?>  

댓글목록

등록된 댓글이 없습니다.

Total 447건 1 페이지
게시물 검색

회원로그인

접속자집계

오늘
299
어제
446
최대
592
전체
38,817

그누보드5
Copyright © seobangnim.com All rights reserved.
자바스크립트를 활성화 하세요![ 브라우저에서 자바스크립트를 활성화하는 방법 ]