码迷,mamicode.com
首页 > 数据库 > 详细

mysql 开发基础系列19 触发器

时间:2018-07-12 12:54:02      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:--   where   for   临时   before   sel   weight   date   应用   

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

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 触发器

标签:--   where   for   临时   before   sel   weight   date   应用   

原文地址:https://www.cnblogs.com/MrHSR/p/9297960.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!