事务:数据库执行事件的最小单元(打开SQL PLUS 相当于一个事务开始了)
A:原子性 C:一致性(事务执行前后一致) I:独立性 D:持久性
撤销DML事务处理
可撤销语句:所有dml语句(insert,update,delete)
ddl,dcl等都不可以撤销
能写在事务中的语句只有select和DML语句
因为如果出现非DML并且不是select,之前的操作就会被提交,不可撤销(例:创建下一个table时,前一个table就会被提交,因为create不是DML语句)
执行事务时如果没有非DML语句执行,关闭页面时因为没有提交,此事务所作的操作不会保留,要保留用commit;语句。
没有提交的事务,别人看不到(除当前事务外)
savepoint a; 设保存点,a为保存点
回滚操作:
rollback; 撤消之前事务所做的操作
rollback to a;
commit; 提交当前所做修改,之后不可回滚
select * from shangpin
where name='白酒1'
for update; 给where语句相关的资源加锁
当一个事务给字段加锁后,其他事务不能对它进行访问。
死锁的例子:两个事务都要对A和B进行操作,一个先缩A,另一个先锁B,然后再锁另外一个时会出现死锁的现象
但SQL遇见死锁时会强制进行处理,让一个事务退出。