执行事务
事务机制:确保数据一致性
事务具有4个属性:
1.原子性:一个事务是一个不可分割的工作单位,事务中包括的各个操作要么都做,要么都不做。
2.一致性:事务必须是使数据库从一个一致性状态变到另一个一致性状态
3.隔离性:一个事务的执行不能被其他事务干扰。
4.持久性:一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
【注意】
1.mysql中默认sql语句的结果自动commit提交到数据库
2.开始需要写starttransaction,这样自动commit就会被禁用,直到我们用commit提交 或者 rollback回滚 来终止这个transaction
starttransaction;
sql1;
sql2;
...
sqln;
commit;
例子:
starttransaction;
insertinto instructors values ('Meng','F','Manager');
commit;
starttransaction;
updateinstructors set rank = 'CEO' where name = 'Meng';
rollback;
begin;
savepointsp1;
insertinto instructors values('Xiao','F','teacher');
savepointsp2;
insertinto instructors value('Ling','M','manager');
savepointsp3;
insertinto instructors value('Dao','M','instructor');
select* from instructors;
rollbackto sp3;
select* from instructors;
releasesavepoint sp3;
【注意】
MySQL的rollback操作只适用于DML(data manipulation language)数据操纵语言:select,insert,update,delete.
DDL(datadefinition language)数据定义语言,比DML要多:create,alter,drop等。DDL主要是用在定义或者改变表的结果,数据类型,表的约束等初始化工作上,他们大多在建立表的时候使用。