Mysql 构造一个触发器 audit_log
触发器
trigger: 由事件来触发某个操作。
事件包括INSERT语句、UPDATE语句和DELETE语句。
当数据库系统执行事件时,就会激活触发器执行操作。
举例理解:
例如,当学生表中增加了一个学生的信息时,学生的总数必须同时改变。可以在这里创建一个触发器,每次增加一个学生的记录,就执行一次计算学生总数的操作。这样就可以保证每次增加学生的记录后,学生总数是与记录数是一致的。
单个执行语句的触发器
create trigger 触发器名字
before|after 触发事件
on 表名 for each row 执行语句
多个执行语句的触发器
create trigger 触发器名字
before|after 触发事件
begin
执行语句
end
使用规则
- 触发器必须有名字,最多64个字符
- 触发时间: BEFORE | AFTER
执行的时间设置:INSERT | UPDATE | DELETE - 触发事件前后
设定触发的事件:它们可以在执行insert、update或delete的过程中触发。 - 触发间隔
触发器的执行间隔:FOR EACH ROW子句通知触发器
每隔一行执行一次动作,而不是对整个表执行一次。
例子
创建两个表
create table goods(gid int,name varchar(20),num smallint
);
create table ord(oid int,gid int,much smallint
);
插入数据```sql
insert into goods values(1,'cat',40);
insert into goods values(2,'dog',63);
insert into goods values(3,'pig',87);
插入触发器
```sql
create trigger t1
after insert on ord for each row
beginupdate goods set num = num-1 where gid =1;
end
创建 触发器 t1
在insert 命令 对 ord这个表 之后
执行的语句为:
更新goods表 的num这一列/字段
让其 中gid=1这一行的num数减去1
SQL练习题
描述
构造一个触发器audit_log,在向employees_test表中插入一条数据的时候,触发插入相关的数据到audit中。
CREATE TABLE employees_test(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
CREATE TABLE audit(
EMP_no INT NOT NULL,
NAME TEXT NOT NULL
);
后台会往employees_test插入一条数据:
INSERT INTO employees_test (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Paul', 32, 'California', 20000.00 );
然后从audit里面使用查询语句:
select * from audit;
解题
create trigger audit_log
after insert on employees_test for each row
begin
insert into audit values(new.id,new.name);
end
old与new:
MySQL 中定义了 NEW 和 OLD,用来表示触发器的所在表中,触发了触发器的那一行数据,来引用触发器中发生变化的记录内容,具体地:
①在INSERT型触发器中,NEW用来表示将要(BEFORE)或已经(AFTER)插入的新数据;②在UPDATE型触发器中,OLD用来表示将要或已经被修改的原数据,NEW用来表示将要或已经修改为的新数据;③在DELETE型触发器中,OLD用来表示将要或已经被删除的原数据;
Mysql 构造一个触发器 audit_log相关推荐
- MySQL存储过程和触发器的实现--数据库学习笔记
从MySQL5.0版本开始就对存储过程和触发器进行了支持,在MySQL进行学习前,先查看您所使用的版本吧,方法有: 1.$mysql -V //linux终端下 2.select version() ...
- Mysql高级之触发器
原文:Mysql高级之触发器 触发器是一类特殊的事务 ,可以监视某种数据操作(insert/update/delete),并触发相关操作(insert/update/delete). 看以下事件: 完 ...
- mysql创建删除触发器的时候_mysql触发器简介及如何创建和删除触发器
什么是mysql触发器 需要MySQL 5 对触发器的支持是在MySQL 5中增加的.因此,本章内容适用于MySQL 5或之后的版本. MySQL语句在需要时被执行,存储过程也是如此.但是,如果你想要 ...
- Oracle使用触发器和mysql中使用触发器的比较
一.触发器 1.触发器在数据库里以独立的对象存储, 2.触发器不需要调用,它由一个事件来触发运行 3.触发器不能接收参数 --触发器的应用 举个例子:校内网.开心网.facebook,当你发一个日志, ...
- mysql 动态传入表名 存储过程_面试再问MySQL存储过程和触发器就把这篇文章给他...
Mysql存储过程及触发器trigger 存储过程 一.一个简单的存储过程 1,一个简单的存储过程 delimiter $$create procedure testa()begin Select * ...
- MySQL数据库:触发器Trigger
一.什么是触发器: 触发器是与表有关的数据库对象,当触发器所在表上出现指定事件并满足定义条件的时候,将执行触发器中定义的语句集合.触发器的这种特性可以协助应用在数据库端确保数据的完整性.触发器是一个特 ...
- oracle触发器比较,Oracle使用触发器和mysql中使用触发器的比较
一.触发器 1.触发器在数据库里以独立的对象存储, 2.触发器不需要调用,它由一个事件来触发运行 3.触发器不能接收参数 --触发器的应用 举个例子:校内网.开心网.facebook,当你发一个日志, ...
- MySQL的学习--触发器
转载自https://www.cnblogs.com/CraryPrimitiveMan/p/4206942.html MySQL包含对触发器的支持.触发器是一种与表操作有关的数据库对象,当触发器所在 ...
- MySQL存储过程+游标+触发器
[0]README 0.1)本文旨在 arrange mysql 存储过程及如何在存储中使用游标 的相关知识: 0.2)delimieter的用法:参见 http://blog.csdn.net/p ...
最新文章
- Struct 和 Class 性能有差异吗?自己测试
- 021_jdbc-mysql入门
- JavaScript、HTML、CSS学习—思维导图
- 训练时loss:0.000e+00_其他品牌还在找不到00后营销方向盘时,小度智能音箱发车了…....
- mysql设计表月份_mysql,表设计
- [内核摘要] 虚拟文件系统
- videojs默认显示controls 按钮功能失效_一文看懂Yearning SQL审核平台功能模块设计...
- dubbo之rmi协议使用
- 代码雨代码源复制_两步教你打造一个代码雨动态壁纸效果,代码可以设置为名字...
- 微信小程序直播电脑端OBS推流直播教程
- 一杯咖啡带你读懂状态机
- 三星手机刷机后显示无服务器,三星刷机后丢失基带别担心,轻松几步解决问题...
- 机器学习实战(11)——初识人工神经网络
- javaw.exe是什么进程?
- mysql alter 改密码_MySql修改密码
- i7 1255u和i5 1135G7哪个好
- 09 七段-复利:营造长期的局部垄断
- 制作视频剪辑,自动剪辑视频的软件如何剪辑
- QMS-云质-质量管理软件-如何助力质量人员提高工作效率与绩效—供应商质量评审
- 基于用户id的最优邀请码生成方案