mysql中的事务
我们在操作mysql的时候。默认执行一条语句是mysql自动帮我们前面加上开始事务,更新数据,提交事务的。
一定要是支持事务的存储引擎 如InnoDB
看你的mysql现在已提供什么存储引擎: mysql> show engines; 看你的mysql当前默认的存储引擎: mysql> show variables like '%storage_engine%'; 你要看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎): mysql> show create table 表名; 如何查看Mysql服务器上的版本 select version();
show engines;
我们可以用这个命令查看一下:
mysql> show variables like 'autocommit'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | autocommit | ON | +---------------+-------+ 1 row in set (0.04 sec)
从查询结果中,我们发现Value的值是ON,表示autocommit开启。我们可以通过以下SQL语句改变这个模式
mysql> set autocommit = 0;
值0和OFF都是一样的,当然,1也就表示ON。通过以上设置autocommit=0,则用户将一直处于某个事务中,直到执行一条commit提交或rollback语句才会结束当前事务重新开始一个新的事务。
我们想执行两条语句需要在一个事务中。我们可以这样执行。(autocommit 不用设置为0也可以。)
BEGIN; Insert into emp select * from emp2 where empno=1; UPDATE emp set salary=500 where empno=1; COMMIT;