网站开发时什么时间适合创建视图,asp双语网站后台怎么用,域名解析映射到网站空间怎么做,饮食类网站概述 事务 是一组操作的集合#xff0c;它是一个不可分割的工作单位#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求#xff0c;即这些操作要么同时成功#xff0c;要么同时失败。 注意#xff1a; 默认MySQL的事务是自动提交的#xff0c;也就是…概述 事务 是一组操作的集合它是一个不可分割的工作单位事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求即这些操作要么同时成功要么同时失败。 注意 默认MySQL的事务是自动提交的也就是说当执行完一条DML语句时,MySQL会立即隐式的提交事务。 控制事务一
查看/设置事务提交方式
SELECT autocommit ;
SET autocommit 0 ;# 1自动 0手动提交事务
COMMIT;回滚事务
ROLLBACK;注意上述的这种方式我们是修改了事务的自动提交行为, 把默认的自动提交修改为了手动提交, 此时我们执行的DML语句都不会提交, 需要手动的执行commit进行提交。 控制事务二
开启事务
START TRANSACTION 或 BEGIN ;提交事务
COMMIT;回滚事务
ROLLBACK;转账案例
drop table if exists account;
create table account(
id int primary key AUTO_INCREMENT comment ID,
name varchar(10) comment 姓名,
money double(10,2) comment 余额
) comment 账户表;
insert into account(name, money) VALUES (张三,2000), (李四,2000);-- 开启事务
start transaction
-- 1. 查询张三余额
select * from account where name 张三;
-- 2. 张三的余额减少1000
update account set money money - 1000 where name 张三;
-- 3. 李四的余额增加1000
update account set money money 1000 where name 李四;
-- 如果正常执行完毕, 则提交事务
commit;
-- 如果执行过程中报错, 则回滚事务
rollback;事务四大特性ACID
原子性Atomicity事务是不可分割的最小操作单元要么全部成功要么全部失败。一致性Consistency事务完成时必须使所有的数据都保持一致状态。隔离性Isolation数据库系统提供的隔离机制保证事务在不受外部并发操作影响的独立环境下运行。持久性Durability事务一旦提交或回滚它对数据库中的数据的改变就是永久的。
并发事务问题
脏读 一个事务读到另外一个事务还没有提交的数据 比如事务B读取到了事务A未提交的数据 不可重复读 一个事务先后读取同一条记录但两次读取的数据不同称之为不可重复读 事务A两次读取同一条记录但是读取到的数据却是不一样的 幻读 一个事务按照条件查询数据时没有对应的数据行但是在插入数据时又发现这行数据已经存在好像出现了 “幻影” 事务隔离级别
为了解决并发事务所引发的问题在数据库中引入了事务隔离级别。主要有以下几种
查看事务隔离级别
SELECT TRANSACTION_ISOLATION;设置事务隔离级别
SET [ SESSION | GLOBAL ] TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE }注意事务隔离级别越高数据越安全但是性能越低。