什么是触发器

触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。

举个例子,比如你现在有两个表【用户表】和【日志表】,当一个用户被创建的时候,就需要在日志表中插入创建的log日志,如果在不使用触发器的情况下,你需要编写程序语言逻辑才能实现,但是如果你定义了一个触发器,触发器的作用就是当你在用户表中插入一条数据的之后帮你在日志表中插入一条日志信息。当然触发器并不是只能进行插入操作,还能执行修改,删除

触发器的事件:事件就是比如insert是插入指令,这时候只要定义好insert,那么就会在插入时候触发,其他的update等操作不会触发

# 插入前
CREATE TRIGGER tri_before_insert_tb1 BEFORE INSERT ON tb1 FOR EACH ROW
BEGIN
...
END
# 插入后
CREATE TRIGGER tri_after_insert_tb1 AFTER INSERT ON tb1 FOR EACH ROW
BEGIN
...
END
# 删除前
CREATE TRIGGER tri_before_delete_tb1 BEFORE DELETE ON tb1 FOR EACH ROW
BEGIN
...
END
# 删除后
CREATE TRIGGER tri_after_delete_tb1 AFTER DELETE ON tb1 FOR EACH ROW
BEGIN
...
END
# 更新前
CREATE TRIGGER tri_before_update_tb1 BEFORE UPDATE ON tb1 FOR EACH ROW
BEGIN
...
END
# 更新后
CREATE TRIGGER tri_after_update_tb1 AFTER UPDATE ON tb1 FOR EACH ROW
BEGIN
...
END

创建触发器的语法如下:

CREATE TRIGGER 触发器名字 BEFORE DELETE ON 触发表的名字 FOR EACH ROW

BEGIN

insert into user_log (列名) values ('值');

END

trigger_name:触发器的名称

tirgger_time:触发时机,为BEFORE或者AFTER

trigger_event:触发事件,为INSERT、DELETE或者UPDATE

tb_name:表示建立触发器的表明,就是在哪张表上建立触发器

trigger_stmt:触发器的程序体,可以是一条SQL语句或者是用BEGIN和END包含的多条语句

所以可以说MySQL创建以下六种触发器:

1、BEFORE INSERT

2、BEFORE DELETE

3、BEFORE UPDATE

4、AFTER INSERT

5、AFTER DELETE

6、AFTER UPDATE

修改终止符

创建触发器实例:

DROP TRIGGER 触发器名字  #删除触发器

show triggers \G;  #查看触发器的指令

*************************** 1. row ***************************
Trigger: userlog  #触发器的名字
Event: INSERT  #什么操作下触发,也就是监听的事件
Table: user  #触发表的名字
Statement: BEGIN   #触发器的开始
insert into user_log (name) values ('xxxxx');  #sql指令
END  #触发器结束
Timing: BEFORE
Created: NULL
sql_mode: NO_ENGINE_SUBSTITUTION
Definer: root@localhost
character_set_client: utf8mb4
collation_connection: utf8mb4_general_ci
Database Collation: latin1_swedish_ci
*************************** 2. row ***************************
Trigger: demo
Event: DELETE
Table: user
Statement: BEGIN
insert into user_log (name) values ('xxxx');
END
Timing: BEFORE
Created: NULL
sql_mode: NO_ENGINE_SUBSTITUTION
Definer: root@localhost
character_set_client: gbk
collation_connection: gbk_chinese_ci
Database Collation: latin1_swedish_ci
2 rows in set (0.01 sec)

转载于:https://www.cnblogs.com/shizhengquan/p/10314870.html

(10)MySQL触发器(同时操作两张表)相关推荐

  1. MYSQL多线程并发操作同一张表同一个字段的更新问题

    MYSQL多线程并发操作同一张表同一个字段的更新问题? 可以用乐观锁方案: 在表里增加个字段,版本号字段 每次更新前先从数据库里获取这个版本号的值,然后更新时要同步更新版本号+1,并且增加更新条件版本 ...

  2. mysql 触发器 模板_MySQL 触发器例子(两张表同步增加和删除)

    MySQL 触发器例子(两张表同步增加和删除),有需要的朋友可以参考下. 例子1: 创建两个表,目的是在一个表里添加一条记录,另一个表也添加一条记录: DROP TABLE IF EXISTS tab ...

  3. MySQL可以同时修改两个表吗_(10)MySQL触发器(同时操作两张表)

    什么是触发器 触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合.触发器的这种特性可以协助应用在数据库端确保数据的完整性. 举个例子,比如你现在有两个表[用户表]和[日志 ...

  4. mysql触发器删除同步_MySQL 触发器例子(两张表同步增加和删除)

    以下两个例子来自: http://www.cnblogs.com/nicholas_f/archive/2009/09/22/1572050.html 实测有效,但是原帖的分隔符不正确,因此稍作修改. ...

  5. mysql 怎么同时删除两张表的数据库,mysql怎样删除多个表格数据库数据_数据库

    mysql删除多个表格数据库数据的要领:在两个表之间竖立级联删除关联,完成删除一个表的数据时,同时删除另一个表中相干的数据,语句为[delete t1,t2 from t1,t2 where 前提]. ...

  6. matlab可以对多张表同时操作吗,update操作多张表

    sql 语句多张表UPDATE用法 一.当用一个表中的数据来更新另一个表中的数据,T-SQL提供多种写法(下面列出了二种),但建议用第一种写法,虽然传统,但结构清晰.飞.飞Asp技术乐园 并且要注意, ...

  7. 使用一个ContentProvider操作多张表

    使用一个ContentProvider操作多张表 在我们开发过程中,通常使用ContentProvider来操作数据.查询数据库中的一张表的数据我们创建一个ContentProvider提供操作,需要 ...

  8. MySQL如何同时删除主外键关联的两张表中的数据

    1. 编写目的 介绍一种方法,解决如下问题:如何同时删除两张相关联的表的记录. 比如说表a的外键fk依赖于表a的id,现在我们需要删除id=5的两条数据. 2. 主要方法 为了简单,推荐更改表a的外键 ...

  9. mysql比对表中数据是否相同_如何用sql比较两张表数据是否一致?

    在批量程序的测试中,经常会涉及到对数据库表的测试,今天我们来介绍一下用sql比较两张表结构相同的表数据是否完全一致的方法. 1.inner join 浅尝 提到比对两张表的数据是否完全相同,很容易想到 ...

最新文章

  1. jQuery 分类导航菜单条点击变色
  2. Vue静态资源的获取
  3. ip打包相对路径 vivado_Vivado自定义IP封装流程
  4. QT的QNdefRecord类的使用
  5. metasploit终端命令大全 MSF
  6. freemarker list size问题
  7. OpenCV中Mat总结
  8. .NET/C#程序开发中如何更优美地实现失败任务重试的逻辑?
  9. 5186. 区间内查询数字的频率
  10. java 中parse_Java中parse()和valueOf(),toString()的区别?
  11. EasyUI 异步Tree
  12. Redhat linux AS4 环境下iSCSI协议配置
  13. jquery常用选择器和常用方法
  14. 数学老师在成人网站上教微积分,年入百万 。。。
  15. 推荐参考文献元数据挖掘的几篇论文
  16. 基于SSM的社区宠物信息管理系统
  17. Android对话框的详细介绍(提示对话框,自定义对话框)
  18. 易懂 | 手把手教你编写你的第一个上位机
  19. 华硕K43TK光驱改硬盘教程
  20. Processing 案例 | 去“富士山”看樱花从树上纷纷而落

热门文章

  1. 英文科技写作 · 经验分享 · 讨论合集
  2. 看贴回帖 感受与感动
  3. LeetCode 5357. 设计一个支持增量操作的栈
  4. Web后端学习笔记 Flask(9)cookie and session
  5. c++学习笔记(16) 递归
  6. python编译出来的程序员_Windows下编译Python2.7源码
  7. java类加载体系,Java类加载体系
  8. SAP License:ERP概述
  9. SAP License:SAP系统合规性审计介绍
  10. 吴裕雄--天生自然 PHP开发学习:MySQL 插入数据