目录:
1.事务
2.事务原理
3.事务--回滚点
4.自动事务
5.事务特性ACID
6.变量
7.触发器
8.创建触发器
9.查看触发器
10.使用触发器
11.触发器记录
12.if分支
13.while循环
14.函数
15.自定义函数
16.查看函数
17.删除函数
18.函数的参数
19.函数--作用域
20.存储过程
21.存储过程--参数
1.事务transaction
* 需求:有一张银行账户表,有A用户给B用户转账:A账户先减少,B账户增加,但是A操作完
之后断电了。
* 解决方案:A减少钱,但是不要立即修改数据表,B收到钱之后,同时修改数据表。
* 事务安全
- 事务:一系列连续的操作。这些操作要么全部成功,要么全部失败。
- 事务安全:一种保护连续操作同时满足的机制
- 事务安全的意义:保证数据操作的完整性
* 注意:引擎myisam不支持事务,也不支外键;innodb支持事务,也支持外键。
-- 创建表时指定引擎
drop table if exists tb_account;
create table tb_account(
number varchar(20) not null unique comment '账户',
name varchar(20) not null comment '户主名',
money decimal(10,2) default 0.0 comment '账户余额'
)charset utf8 engine innodb;
insert into tb_account values(null,'0001','张三',1000.00),(null,'0002','李四',1000.00);
* 手动开启事务:start transaction;
update tb_account set money = money -100 where id = 1;
update tb_account set money = money +100 where id = 2;
* 提交事务 commit;
* 回滚事务 rollback;
2.事务原理
* 事务操作原理:事务开启之后,所有的操作都会临时保存到事务日志,事务日志只有在得到commit命令
才会同步到数据表,其他任何情况都会清空(rollback,断电,断开连接)
3.事务--回滚点
* 设置回滚点:savepoint 回滚点名;
* 回到回滚点:rollback to 回滚点名;
4.自动事务
* 在mysql中,默认的都是自动事务处理,用户操作完会立即同步到数据表中
* 自动事务,系统通过autocommit变量控制
show variables like 'autocommit'; select @@autocommit;
* 关闭自动事务处理 set autocommit = off/0;
* 自动事务处理关闭后需要手动提交或回滚
* 通常,我们都会使用自动事务, 开启 set autocommit = on/1;
5.事务特性ACID
* atomic[əˈtɒmɪk]:原子性,事务的整个操作是一个整体,不可分割,要么全部成功,要么全部失败
* consistency[kənˈsɪstənsi]:一致性,事务操作的前后,数据表的数据没有变化
* isolation:隔离性,事务操作时相互隔离,不受影响
* durability:持久性,数据一旦提交,不可改变,永久的改