什么是事务
事务是作为数据库的一个整体来执行的,在一个事务里,所有的操作要么都执行,要么都不执行,从而保证数据的安全一致。
四大特性ACID
Atomicity:事务是一个完整的操作,事务的各步操作是不可分的(原子的),要么都执行,要么都不执行
Consistency:当事务完成时,数据必须处于一致状态
Isolation:并发事务之间彼此隔离、独立,它不应以任何方式依赖于或影响其他事务
Durability:事务完成后,它对数据库的修改被永久保持
使用事务
手动开启事务:BEGIN ; 或 START TRANSACTION;
提交事务:COMMIT ;
回滚事务:ROLLBACK ;
设置还原点:SAVEPOINT
注意:MySQL中默认每条SQL语句都是一个单独的事务,并且自动提交,
可以通过设置默认提交方式来改变它
【0为默认不提交,1为默认提交】SET autocommit = 0|1;
事务代码示例:
-- 关闭/开启自动提交状态
-- SET autocommit = 0|1;
-- 值为0:关闭自动提交
-- 值为1:开启自动提交
SET autocommit = 0 ;
-- 开事物
-- begin ;
-- start transaction ;
BEGIN ;
SELECT * FROM emp ;
-- 还原点
SAVEPOINT p1 ;
DELETE FROM emp WHERE deptno = 10 ;
-- 还原
ROLLBACK TO p1 ;
-- 提交
COMMIT;
-- 还原自动提交
SET autocommit = 1 ;