触发器是与表有关的数据库对象,触发器只能是针对创建的永久表,而不能是临时表。

1.1 创建触发器

 -- 语法:
CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt

  trigger_time:是触发器的触发时间,可以是 before或after, before是检查约束前触发,而after是检查约束后触发。
  trigger_event:是触发器的触发事件,可以是 insert,update,delete。
  同一个表相同的触发时间的相同触发事件,只能定义一个触发器。使用别名old和new 来引用触发器中发生变化的记录内容。

--  先查看city_memory数据(触发前查看表数据)
SELECT * FROM city_memory;

-- 创建city表的insert 触发器 使用AFTER触发时间
DELIMITER $$
CREATE TRIGGER tri_city
AFTER INSERT ON city FOR EACH ROW BEGIN
INSERT INTO city_memory (country_id, cityname, Citycode)
VALUES (new.country_id, new.cityname, new.Citycode);
END;
$$
DELIMITER ; -- 插入city表数据,触发city表插入触发器
INSERT INTO city(country_id, cityname, Citycode) VALUES(2,'中国触发','001触发');
-- 再次查看SELECT * FROM city_memory; 如下图所示:

  下面是city表数据:

2. 查看触发器

-- 使用information_schema.triggers来查看
SELECT * FROM information_schema.triggers WHERE trigger_name = 'tri_city'

3. 删除触发器

DROP TRIGGER tri_city;

总结:触发器的限制:

(1)触发程序不能调用将数据返回客户端的存储程序。

(2)不能在触发器中使用以显式或隐式方式开始或结束事务的语句。

编写过于复杂的触发器或者增加过多的触发器对记录的插入、更新、删除操作肯定会有比较严重的影响。不要将应用的处理逻辑过多的依赖于触发器来处理。

mysql 开发基础系列19 触发器的更多相关文章

  1. mysql 开发基础系列12 选择合适的数据类型(上)

    一. char 与varchar比较 在上图的最后一行的值只适用在"非严格模式",关于严格模式后面讲到.在“开发基础系列4“ 中讲到CHAR 列删除了尾部的空格.由于char是固定 ...

  2. mysql 开发基础系列17 存储过程和函数(上)

    一. 概述 存储过程和函数是事先经过编译并存储在数据库中的一段sql语句集合,可以简化应用开发人员的很多工作,减少数据在数据库与应用服务器之间的传输,提高数据处理效率是有好处的.存储过程和函数的区别在 ...

  3. mysql 开发基础系列22 SQL Model

    一.概述 与其它数据库不同,mysql 可以运行不同的sql model 下, sql model 定义了mysql应用支持的sql语法,数据校验等,这样更容易在不同的环境中使用mysql. sql ...

  4. mysql 开发基础系列20 事务控制和锁定语句(上)

    一.概述 在mysql 里不同存储引擎有不同的锁,默认情况下,表锁和行锁都是自动获得的,不需要额外的命令, 有的情况下,用户需要明确地进行锁表或者进行事务的控制,以便确保整个事务的完整性.这样就需要使 ...

  5. mysql 开发基础系列18 存储过程和函数(下)

    1. 光标的使用(游标) 在存储过程和函数中可以使用光标对结果集进行循环的处理,光标使用包括光标的声明,open ,fetch,close. 下面在存储过程中使用一个光标, 这个举例中光标里的逻辑不重 ...

  6. mysql 开发基础系列15 索引的设计和使用

    一.概述 所有mysql 列类型都可以被索引,是提高select查询性能的最佳方法. 根据存储引擎可以定义每个表的最大索引数和最大索引长度,每种引擎对每个表至少支持16个索引,总索引长度至少为256字 ...

  7. mysql 开发基础系列14 字符集

    字符集是一套文字符号及其编码,比较规则的集合.第一个字符集是ascll(american standard code for information interchange).  1.  选择合适的字 ...

  8. mysql 开发基础系列13 选择合适的数据类型(下)

    一.  BloB和Text 1. 合成索引 合成索引可以提高大文本字段BLOB和Text的查询性能, 合成索引是在表中增加一个字段存放散列值,这种技术只能用于精确匹配的查询,可以使用md5()或sha ...

  9. mysql 开发基础系列10 存储引擎 InnoDB 介绍

    一. 概述: InnoDB存储引擎提供了具有提交,回滚,和崩溃恢复能力的事务安全,对比MYISAM 的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引.它的特点有如下: ...

随机推荐

  1. HttpWebRequest.AddRange 支持long类型

    很久很久以前,在哪个FAT32格式还流行的年代,文件大小普遍还没超过4G的年代,.Net已经出来了. 而那时候.Net实现的HTTP断点续传协议,还没预料到如此普及(我猜的).那时候的HttpWebR ...

  2. 计蒜客 2019 蓝桥杯省赛 B 组模拟赛(一)

    D题:马的管辖 二进制枚举方案.判断该方案是否全部能被覆盖,将最优方案存下来并进行剪枝. #include<iostream> #include<cstring> #inclu ...

  3. jQuery获取元素的方法

    1·$(".box").offset().left 获取盒子左边到浏览器左侧的距离(上右下相同): 2·$("span").width() 获取盒子的宽度(高度 ...

  4. PHP与Excel 笔记

    一:   PHP将数据导出Excel表中(投机型) 二: PHPExcel: Github上可以下载此插件包,用法如下: 前端: //上传阅卷员Excel文件 $("#upload_memb ...

  5. PAT DFS,BFS,Dijkstra 题号

    为什么要分类刷题: 因为刷⼀道算法题需要花⼀两个⼩时甚⾄半天,平时我们还要上课做别的事情,你在⼀段时间内刷算法如果只按照顺序,可能今天遇到了⼀道最短路径的题⽬,弄了半天好不容易看懂了别⼈的代码,以为⾃ ...

  6. suse11 安装 python3.6 python3 安装步骤

    首先需要去网上下载Python-3.6.4.tgz,libopenssl-devel-0.9.8j-2.1.x86_64.rpm zlib-devel-1.2.7-3.14.x86_64.rpm li ...

  7. windows系统中配置多版本anaconda

    1.最好从国内的镜像站下载anaconda,国外那个站实在是太慢了,清华开源软件镜像站(https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/) 2.如 ...

  8. C++ 虚函数的两个例子

    1. 第一个例子是朋友告诉我Qt中的某个实现 1 #include <iostream> 2 3 // Qt中的某个实现 4 class A{ 5 public: 6 A() = defa ...

  9. NGUI 摇奖滚轮

    效果图: 优缺点: 优点: 1.一条曲线完美解决旋转问题 2. 解决了超速的问题,现在速度再快也不会乱了 3.快速停止的时候进行了进度区分,后面的会等前面的停了再停 缺点: 1.停止节奏上会有细微差距 ...

  10. La nuova tecnologia del puntatore laser

    Il potente puntatore laser 20000 mW viene fornito di serie con gestione termica e driver laser di qu ...