MySQL 触发器简单实例 - 转载
触发器:可以更新,删除,插入触发器,不同种类的触发器可以存在于同一个表,但同种类的不能有多个。
一个更新、一个删除是可以共存的。
~~语法~~
CREATE TRIGGER <触发器名称> --触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象.
{ BEFORE | AFTER } --触发器有执行的时间设置:可以设置为事件发生前或后。
{ INSERT | UPDATE | DELETE } --同样也能设定触发的事件:它们可以在执行insert、update或delete的过程中触发。
ON <表名称> --触发器是属于某一个表的:当在这个表上执行插入、 更新或删除操作的时候就导致触发器的激活. 我们不能给同一张表的同一个事件安排两个触发器。
FOR EACH ROW --触发器的执行间隔:FOR EACH ROW子句通知触发器 每隔一行执行一次动作,而不是对整个表执行一次。
<触发器SQL语句> --触发器包含所要触发的SQL语句:这里的语句可以是任何合法的语句, 包括复合语句,但是这里的语句受的限制和函数的一样。
DELIMITER $$ CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
TRIGGER name_trigger BEFORE/AFTER INSERT/UPDATE/DELETE
ON TableName
FOR EACH ROW BEGIN .....................此处编辑所要触发的sql存储过程语句..................................... END$$ DELIMITER ;
标准的触发器书写
--你必须拥有相当大的权限才能创建触发器(CREATE TRIGGER),如果你已经是Root用户,那么就足够了。这跟SQL的标准有所不同。
~~实例~~
example1 - INSERT:
创建表tab1
DROP TABLE IF EXISTS tab1;
CREATE TABLE tab1( tab1_id varchar(11));DROP TABLE IF EXISTS tab2;
CREATE TABLE tab2( tab2_id varchar(11));创建触发器:t_afterInsert_on_tab1
作用:增加tab1表记录后自动将记录增加到tab2表中(注意下面sql事例中的红色部分,delimiter与$$之间必须仅且仅有一个空格)
DROP TRIGGER IF EXISTS t_afterInsert_on_tab1;
DELIMITER $$
CREATE TRIGGER t_afterInsert_on_tab1 AFTER INSERT ON tab1FOR EACH ROWBEGIN INSERT INTO tab2(tab2_id) VALUES(new.tab1_id);END$$
DELIMITER ;
INSERT INTO tab1(tab1_id) values('0001');SELECT * FROM tab1,tab2;
example2 - DELETE:
创建触发器:t_afterDelete_on_tab1
作用:删除tab1表记录后自动将tab2表中对应的记录删去(注意下面sql事例中的红色部分,delimiter与$$之间必须仅且仅有一个空格)
DROP TRIGGER IF EXISTS t_afterDelete_on_tab1;
DELIMITER $$
CREATE TRIGGER t_afterDelete_on_tab1AFTER DELETE ON tab1FOR EACH ROWBEGIN DELETE FROM tab2 WHERE tab2_id=old.tab1_id;END$$
DELIMITER ;
DELETE FROM tab1 WHERE tab1_id='0001';SELECT * FROM tab1,tab2;
example3 - UPDATE:
创建触发器:t_afterUpdate_on_tab1
作用:更新tab1表记录后自动将tab2表中对应的记录更新(注意下面sql事例中的红色部分,delimiter与$$之间必须仅且仅有一个空格)
DROP TRIGGER IF EXISTS t_afterUpdate_on_tab1;
DELIMITER $$
CREATE TRIGGER t_afterUpdate_on_tab1AFTER UPDATE ON tab1FOR EACH ROWBEGIN UPDATE tab2 SET tab2_id = new.tab1_id;END;$$DELIMITER ;
UPDATE tab1 SET tab1_id = '0002';SELECT * FROM tab1,tab2;MySQL 触发器简单实例 - 转载的更多相关文章
- MySQL 触发器简单实例
~~语法~~ CREATE TRIGGER <触发器名称> --触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象.{ BEFORE | ...
- mysql触发器trigger 实例详解
mysql触发器trigger 实例详解 (转自 https://www.cnblogs.com/phpper/p/7587031.html) MySQL好像从5.0.2版本就开始支持触发器的功能 ...
- Mysql笔记——触发器简单实例
首先贴上触发器语法吧: CREATE TRIGGER <触发器名称> –触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象. { BEFOR ...
- MySQL触发器Trigger实例篇
定义: 何为MySQL触发器? 在MySQL Server里面也就是对某一个表的一定的操作,触发某种条件(Insert,Update,Delete 等),从而自动执行的一段程序.从这种意义上讲触发器是 ...
- mysql数据库 触发器简单实例
触发器(trigger):监视某种情况,并触发某种操作. 触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/befo ...
- Java WebService 简单实例[转载]
[注意,本文转载自 http://hyan.iteye.com/ ] 一.准备工作(以下为本实例使用工具) 1.MyEclipse10.7.1 2.JDK 1.6.0_22 二.创建服务端 1 ...
- mysql 存储过程简单实例
一.什么是存储过程 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程 ...
- MySql存储过程简单实例
转自:http://www.cnblogs.com/zhuawang/p/4185302.html ********************* 创建表 ************************ ...
- mysql触发器使用实例
DELIMITER $$ USE `db`$$ DROP TRIGGER `member_walletinit_trigger`$$ CREATE TRIGGER `member_walletinit ...
随机推荐
- spring 和 struts 整合遇到的问题(学习中)
一大早就报错 org.hibernate.TransactionException: Transaction not successfully started at org.hibernate.eng ...
- Windows(7)上那些好用的软件及优化技巧(原创)
*本文为原创内容,转载请注明作者和出处:www.cnblogs.com/wang1024 软件篇 注:以下软件在百度直接搜索软件名均可找到官网,直接官网下载即可 大众的软件哪个好: 杀毒软件专题 基于 ...
- 诡异的js
[] + {}; 隐式转换后,是0 那 {} + []呢? var a = 42,b; b = ( a++, a);
- Java Json API:Gson使用简单入门
GSON是Google开发的Java API,用于转换Java对象和Json对象.本文讨论并提供了使用API的简单代码示例.更多关于GSON的API可以访问:http://sites.google.c ...
- 2 CDuiString的bug
重温了一下 Effective C++,发现这就是条款24所指出的问题,看来读书百遍不如写代码一遍啊 在Notify处理消息时会有很多if语句,我通常喜欢把常量放在双等号前面,变量放在后面,比如: ...
- pug.compile() will compile the Pug source code into a JavaScript function that takes a data object (called “locals”) as an argument.
Getting Started – Pug https://pugjs.org/api/getting-started.html GitHub - Tencent/wepy: 小程序组件化开发框架 h ...
- MyBatis generator 生成生成dao model mappper
MyBatis GeneratorXML配置文件参考 在最常见的用例中,MyBatis Generator(MBG)由XML配置文件驱动. 配置文件告诉MBG: 如何连接到数据库 什么对象要生成,以及 ...
- Vue(1)- es6的语法、vue的基本语法、vue应用示例,vue基础语法
一.es6的语法 1.let与var的区别 ES6 新增了let命令,用来声明变量.它的用法类似于var(ES5),但是所声明的变量,只在let命令所在的代码块内有效.如下代码: { let a = ...
- swift 值得学习的项目
http://www.php100.com/html/it/biancheng/2015/0112/8329.html
- Java Synchronized 遇上 静态/实例方法 、静态/实例变量
同步 1)同步方法 2)同步块 21) 实例变量 22) 类变量 锁定的内容 1)锁定类的某个特定实例 2)锁定类对象(类的所有实例) 一.同步类实例:同步方法 public class Demo { ...