当前位置: 移动技术网 > IT编程>数据库>Mysql > mysql数据库关于事物的问题?求解答

mysql数据库关于事物的问题?求解答

2019年01月11日  | 移动技术网IT编程  | 我要评论
表格代码: 一个表格如下: 操作代码如下: 代码1: 代码2: 2个代码不同点在于第4行;单独执行时代码1不能成功执行,代码2能成功执行。 若是将代码1和代码2分别先执行1遍,由于 ROLLBACK 的影响,数据库不会发生改变。 若是在代码1执行1遍后,在只执行 COMMIT; 后,会造成数据库的值 ...

表格代码:

create table `t_teacher` (
  `id` int(20) not null auto_increment,
  `name` varchar(20) not null,
  `deposit` bigint(20) default null,
  primary key (`id`)
) engine=innodb auto_increment=71 default charset=utf8;

一个表格如下:

                

操作代码如下:

代码1:

start transaction;
select * from t_teacher;
update t_teacher set deposit = deposit+100 where name ='老李';
insert into t_teacher(id,name,deposit) values (8,'老张',7000);
rollback;
commit;

代码2:

start transaction;
select * from t_teacher;
update t_teacher set deposit = deposit+100 where name ='老李';
insert into t_teacher(name,deposit) values ('老张',7000);
rollback;
commit;

2个代码不同点在于第4行;单独执行时代码1不能成功执行,代码2能成功执行。

若是将代码1和代码2分别先执行1遍,由于 rollback 的影响,数据库不会发生改变。

若是在代码1执行1遍后,在只执行 commit; 后,会造成数据库的值改变,其结果相当于执行了行3;

但是在代码2执行1便后,在执行 commit;  后,数据库的值不发生改变。

请问这是什么原因?



如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网