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


    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.全局变量和局部变量互不影响;

  • 相关阅读:
    【洛谷】3966:[TJOI2013]单词【AC自动机】【fail树】
    CF980E The Number Games【树链剖分/线段树】
    【扫描线模板】
    【洛谷】3402:【模板】可持久化并查集
    【洛谷】1525:关押罪犯【并查集】【二分+二分图判断】
    【洛谷】4180:【模板】严格次小生成树[BJWC2010]【链剖】【线段树维护最大、严格次大值】
    【POJ】2796:Feel Good【单调栈】
    【POJ】1862:Stripies【贪心】【优先队列】
    《中间人攻击——wikipedia》——学习摘要
    《中间人攻击——ARP欺骗的原理、实战及防御》——学习摘要
  • 原文地址:https://www.cnblogs.com/wang1204/p/6617825.html
Copyright © 2020-2023  润新知