事务(Transaction)
*事务的解释?
其实指的是一组操作,里面包含许多个单一的逻辑。只要有一个逻辑没有执行成功,那么都算失败。所有的数据都回归到最初的状态(回滚)
*为什么要有事务?
为了确保逻辑的成功.例子:银行转账
使用命令行的例子:
sqlyog中创建表格:
插入数据:
cmd:
mysql -u root -p
回车输入密码
SQL语句进入创建的数据库bank
use bank
SQL语句查询刚刚创建的表格account
select * form account
修改一下数据库中的值提交:
update account set money = money -100 where id=1;
在sqlyog中刷新得到结果:
sql中再次查询得到结果:
这两个变量是否不一样呢?我们进入变量查询中看一下:
show variables like '%commit%';
事务包含多个操作 这里执行两个操作,如果两个都执行成功了就执行commit 提交;如果一条或者两条执行失败了就执行rollback回滚操作。
这里我们:
set autocommit =off;
并查询:
show variables like '%commit%';
怎么看回滚呢?
再次执行SQL语句减一百 查一下:
查看一下sqlyog刷新:
可以看到没有变化!
现在有提交吗?有回滚吗?都看不出来。
现在我们返回cmd MySQL 输入提交:
commit;
刷一下:
变成了八百,这里可以看出要是事务没有提交是不会除结果的,一旦提交这个事务就结束了,怎样在开一个事务呢?
start transaction;
在执行SQL语句减一百在查询:
刷新一下还是八百:
如果想回滚怎么办?
减一百700 在回滚 再次查询又是八百这里 我们就实现了数据库的回滚:
rollback;
rollback也是代表了一个事务的结束。