[mysql] mysql에서의 commit, rollback 처리와 php에서의 transaction 처리
페이지 정보
작성자 서방님 댓글 0건 조회 133회 작성일 11-01-10 13:27본문
set autocommit=0 | begin...commit 사용 |
begin...rollback 사용 | |
set autocommit=1 | commit 사용 |
rollback 사용 |
삭제된 레코드의 복구가 불가능하다. 즉, 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> 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> SELECT * FROM table;
column1 | column2 |
1 | 10 |
php에서의 트렌젝션 처리예
- <?
- // trans.php
- function begin()
- {
- mysql_query("BEGIN");
- }
- function commit()
- {
- mysql_query("COMMIT");
- }
- function rollback()
- {
- mysql_query("ROLLBACK");
- }
- mysql_connect("localhost","username", "password") or die(mysql_error());
- mysql_select_db("test") or die(mysql_error());
- $query = "INSERT INTO trans table (column1,column2)
- . "values (1,'1')";
- begin(); // transaction begins
- $result = mysql_query($query);
- if(!$result)
- {
- rollback(); // transaction rolls back
- echo "you rolled back";
- exit;
- }
- else
- {
- commit(); // transaction is committed
- echo "your insertion was successful";
- }
- ?>
댓글목록
등록된 댓글이 없습니다.