吉林省城乡建设厅网站6,沈阳网站备案照相,深圳市专业做网站,广告设计软件叫什么事务
比如说将张三的银行账户拿出一千给李四#xff0c;首先需要查询张三的账户余额#xff0c;扣除1000#xff0c;然后如果给李四加上1000的过程中出现异常会回滚事务#xff0c;临时修改的数据会回复回去。
-- 1. 查询张三账户余额
select * from account where name …事务
比如说将张三的银行账户拿出一千给李四首先需要查询张三的账户余额扣除1000然后如果给李四加上1000的过程中出现异常会回滚事务临时修改的数据会回复回去。
-- 1. 查询张三账户余额
select * from account where name 张三;
-- 2. 将张三账户余额-1000
update account set money money - 1000 where name 张三;
-- 此语句出错后张三钱减少但是李四钱没有增加
模拟sql语句错误
-- 3. 将李四账户余额1000
update account set money money 1000 where name 李四;
-- 查看事务提交方式
SELECT AUTOCOMMIT;
-- 设置事务提交方式1为自动提交0为手动提交该设置只对当前会话有效
SET AUTOCOMMIT 0;
-- 提交事务
COMMIT;
-- 回滚事务
ROLLBACK;
-- 设置手动提交后上面代码改为
select * from account where name 张三;
update account set money money - 1000 where name 张三;
update account set money money 1000 where name 李四;
commit;
操作方式二
开启事务
START TRANSACTION 或 BEGIN TRANSACTION;
提交事务
COMMIT;
回滚事务
ROLLBACK;
start transaction;
select * from account where name 张三;
update account set money money - 1000 where name 张三;
update account set money money 1000 where name 李四;
commit;
出现错误就执行rollback反之则commit提交 四大特性ACID
原子性(Atomicity)事务是不可分割的最小操作但愿要么全部成功要么全部失败一致性(Consistency)事务完成时必须使所有数据都保持一致状态隔离性(Isolation)数据库系统提供的隔离机制保证事务在不受外部并发操作影响的独立环境下运行持久性(Durability)事务一旦提交或回滚它对数据库中的数据的改变就是永久的
一致性的理解执行完程序后张三和李四的余额之和是不变的
隔离性的理解有若干个并发事务事物a和事物b同时在操作数据库两个事物互不影响。 并发事务 脏读事物B把一条数据给改了 还没commit事物A读到了事物B改变后的数据
不可重复读事物A先查询一遍数据事物B把数据更改了并commit提交事物了事物A再查询发现数据更改了。
幻读事物A查询id为3的数据发现没有此时事物B插入了id为3的数据并commit提交了事物A插入id为3的数据发现数据已经存在但是再次查询的时候还是没有这个数据出现了幻觉。 并发事务隔离级别 分别对应读取未提交内容、读取提交内容、可重读、可串行化
√表示在当前隔离级别下该问题会出现Serializable 性能最低Read uncommitted 性能最高数据安全性最差
查看事务隔离级别
SELECT TRANSACTION_ISOLATION;
设置事务隔离级别
SET [ SESSION | GLOBAL ] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE };
SESSION 是会话级别表示只针对当前会话有效GLOBAL 表示对所有会话有效