锁表
- 表锁定只用于防止其它客户端进行不正当地读取和写入
- MyISAM 支持表锁,InnoDB 支持行锁
- -- 锁定
- LOCK TABLES tbl_name [AS alias]
- -- 解锁
- UNLOCK TABLES
触发器
- 触发程序是与表有关的命名数据库对象,当该表出现特定事件时,将激活该对象
- 监听:记录的增加、修改、删除。
- -- 创建触发器
- CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt
- 参数:
- trigger_time是触发程序的动作时间。它可以是 before 或 after,以指明触发程序是在激活它的语句之前或之后触发。
- trigger_event指明了激活触发程序的语句的类型
- INSERT:将新行插入表时激活触发程序
- UPDATE:更改某一行时激活触发程序
- DELETE:从表中删除某一行时激活触发程序
- tbl_name:监听的表,必须是永久性的表,不能将触发程序与TEMPORARY表或视图关联起来。
- trigger_stmt:当触发程序激活时执行的语句。执行多个语句,可使用BEGIN...END复合语句结构
- -- 删除
- DROP TRIGGER [schema_name.]trigger_name
- 可以使用old和new代替旧的和新的数据
- 更新操作,更新前是old,更新后是new.
- 删除操作,只有old.
- 增加操作,只有new.
- -- 注意
- 1. 对于具有相同触发程序动作时间和事件的给定表,不能有两个触发程序。
- -- 字符连接函数
- concat(str1,str2,...])
- concat_ws(separator,str1,str2,...)
-
- -- 分支语句
- if 条件 then
- 执行语句
- elseif 条件 then
- 执行语句
- else
- 执行语句
- end if;
-
- -- 修改最外层语句结束符
- delimiter 自定义结束符号
- SQL语句
- 自定义结束符号
- delimiter ; -- 修改回原来的分号
-
- -- 语句块包裹
- begin
- 语句块
- end
-
- -- 特殊的执行
- 1. 只要添加记录,就会触发程序。
- 2. Insert into on duplicate key update 语法会触发:
- 如果没有重复记录,会触发 before insert, after insert;
- 如果有重复记录并更新,会触发 before insert, before update, after update;
- 如果有重复记录但是没有发生更新,则触发 before insert, before update
- 3. Replace 语法 如果有记录,则执行 before insert, before delete, after delete, after insert
(编辑:威海站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|