您的位置:首页 > 数据库 > MySQL

(mysql)触发器、事件、事务、函数

2015-10-09 23:35 671 查看
1.事务操作原理:事务开启之后Start transaction,所有的操作都会临时保存到事务日志。只有在得到commit才会关闭,否则清空;

2.设置回滚点: savepoint 回滚点名字; 回到回滚点: rollback to 回滚点名字;

3.事务特性:ACID A:原子性,要么成功,要么失败 C:一致性,只有commit时才会改变 I:隔离性,两个窗口操作互不影响 D:永久性,数据提交,不可改变;

3_2.锁机制: innodb默认是行锁, 但是如果在事务操作的过程中, 没有使用到索引,那么系统会自动全表检索数据, 自动升级为表锁

4.非id字段没有索引,搜索时会全表检索;形成表索;

4_2.会话级别: 临时修改, 当前客户端当次连接有效 Set 变量名 = 值;/Set @@变量名 = 值;全局级别: 一次修改,永久生效(对所有客户端都生效) Set global 变量名 = 值;

5.修改系统变量:set 变量 = 值;

6.设置自定义变量:set @变量名; 查看:select @变量名;

7.在mysql中 = 会被当做比较处理 所以赋值一般用:=

8.变量不区分数据库,跟着用户走;

9.触发器:事件类型(insert delete update),触发时间(before after),触发对象

10.触发器基本语法

-- 临时修改语句结束符

Delimiter 自定义符号: 后续代码中只有碰到自定义符号才算结束

Create trigger 触发器名字 触发时间 事件类型 on 表名 for each row

Begin -- 代表左大括号: 开始

-- 里面就是触发器的内容: 每行内容都必须使用语句结束符: 分号

End -- 代表右带括号: 结束

-- 语句结束符

自定义符号

-- 将临时修改修正过来

Delimiter ;

10_2.Old代表的是旧记录,new代表的是新记录

11.事件类型和触发事件不能一致 不然会死循环;

12.创建触发器:create trigger 触发器名字 触发时间

13.在mysql中只有if分支;if 条件 then 执行代码(如果不执行用end if结束)

14.自定义函数 create function 函数名 returns 。。。

15.像函数 触发器 表单 这种结构 即使退出,重新登录是还在;

16.创建函数只在当前数据库使用,不能跨库;

17.mysql的作用域与js的作用域一样;全局变量可以在任何地方使用,局部变量只能在函数内部使用;

18.mysql在调用函数的时候才会发现错误;

19.存储过程是一种没有返回值的函数;

20.过程没有返回值: select是不能访问的.要用call

21.set之后可以不用:=

22.procedure局部变量和全局变量无关;在调用结束之后,out和inout类型 系统会将局部变量的值重新返回给全局变量

23.关于procedure的in out inout

1.in的话就是可以给pro()赋值 或者外面定义变量@ 也可以 eg:pro(1);或者set @a=1 ;pro(@a);

2.out只能用外面定义变量@赋值给pro() 并且会 将变量@变成null

3.inout只能在外面定义变量@赋值给pro()但是变量@不变;

24.全局变量和局部变量互不影响;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: