MySQL savepoint-事务测试

首先,同时开启2个数据库连接测试数据库事务。以下分别用Thread1,Thread2代替。

2个线程的执行顺序为:

 Thread1              Thread2

    1.1

  1.2               

    1.3                 1

    2.1

    2.2

    2.3                 2

    3                  3

    4.1                 

    4.2                 4 

  5                  

 

##prepare test
CREATE TABLE _TRAN(
 k INT AUTO_INCREMENT,
 first_name varchar(255),
 last_name varchar(255),
 PRIMARY KEY (k)
)TYPE=INNODB;


[1] thread
## 1.1 select first_name is 'Simon' , will be return null
select * from _tran where first_name='Simon';

## 1.2 start a transaction,and insert a data to table _tran
START TRANSACTION;
INSERT INTO _tran(`first_name`,`last_name`)
  values('Simon','Tom');
## 1.3 can find a data form _tran where first_name is 'Simon'
select * from _tran where first_name='Simon';

## 2.2 defind a test for savepoint;
savepoint test;
## 2.2 insert into a data again;
insert into _tran(`first_name`,`last_name`)
  values('Simon','Cof');
## 2.3 can find 2 data from _tran where first_name is 'Simon';
select * from _tran where first_name='Simon';

## 3 rollback to savepoint test;
rollback to savepoint test;

## 4.1 find only a row data for _tran where first_name is 'Simon';
select * from _tran where first_name='Simon';
## 4.2 use commit command to commit;
COMMIT;

## 5 find only a row data from _tran where first_name is 'Simon'
select * from _tran where first_name='Simon';

 

[2] thread
## 1 select first_name is 'Simon', will be return null;
select * from _tran where first_name='Simon';

## 2 return null again 2
select * from _tran where first_name='Simon';

## 3 return null agegin 3
select * from _tran where first_name='Simon';

## 4 find only a row data from _tran where first_name is 'Simon'
select * from _tran where first_name='Simon';

 

posted @ 2011-01-20 00:24  陈文龙  阅读(3568)  评论(0编辑  收藏  举报