mysql的触发器
什么是触发器
触发器是与表有关的数据库对象,可以在 insert/update/delete 之前或之后,触发并执行触发器中定义的SQL语句。触发器的这种特性可以协助应用在数据库端确保数据的完整性 、日志记录 、数据校验等操作 。使用别名 NEW 和 OLD 来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。现在触发器还只支持行级触发,不支持语句级触发。
解读:很多人看上面的触发器概念介绍,感觉还是很蒙圈,触发器简单的来说就是我们对数据库中的某一张表进行添加、修改或者删除的时候、就会触发我们对应的操作。
创建触发器
DELIMITER $ CREATE TRIGGER 触发器名称 BEFORE|AFTER INSERT|UPDATE|DELETE ON 表名 [FOR EACH ROW] -- 行级触发器 BEGIN 触发器要执行的功能; END$ DELIMITER ;
解读:
BEFORE|AFTER 表示是在操作之前还操作之后触发
INSERT|UPDATE|DELETE 是添加、修改、删除的意思
ON 表名 表示是对哪一张表进行添加、修改或者删除的时候触发我们要的操作
需求:
我这里有一张学生表:student和一张日志操作表:student_log,如果有人对student进行了添加、修改或者删除,我们就把这些操作的记录记录到
student_log表中。
学生表:
操作日志表:
操作日志记录的效果图:
解读:
第1行:INSERT是表示添加,表示对student进行新增来一条数据,表的id是3,新增的内容是什么什么
第2行:UPDATE表示是修改,表示对student进行了内容修改,修改的id是1,修改的内容有,修改前怎么样,修改后怎么样。
代码实现
1、创建表
学生表: CREATE TABLE student( id INT PRIMARY KEY AUTO_INCREMENT, -- 学生id NAME VARCHAR(20), -- 学生姓名 age INT, -- 学生年龄 gender VARCHAR(5), -- 学生性别 score INT -- 学生成绩 ); 日志表: CREATE TABLE student_log( id INT PRIMARY KEY AUTO_INCREMENT, -- 日志id operation VARCHAR(20), -- 操作类型 (insert update delete) operation_time DATETIME, -- 操作时间 operation_id INT, -- 操作表的id operation_params VARCHAR(200) -- 操作参数 );
创建INSERT类型的触发器
now();获取的是当前的系统时间
concat( ) ;是字符串拼接函数
创建UPDATE类型的触发器
创建DELETE类型的触发器
查看触发器
SHOW TRIGGERS;
删除触发器
DROP TRIGGER 触发器名称;
触发器的总结
1、触发器是与表有关的数据库对象
2、可以在 insert/update/delete 之前或之后,触发并执行触发器中定义的SQL语句
3、触发器的这种特性可以协助应用在数据库端确保数据的完整性 、日志记录 、数据校验等操作
4、使用别名 NEW 和 OLD 来引用触发器中发生变化的记录内容
原文地址:https://www.cnblogs.com/cangqinglang/p/15024217.html
- 厚土Go学习笔记 | 37. 图片(image)生成器
- 编写地道的Go代码
- 开发你不能忽略的问题?JavaScript(JS)
- 厚土Go学习笔记 | 36. web服务指定路径下的get参数接收与处理
- 用R进行文本分析初探——包含导入词库和和导入李白语句
- Golang事务模型
- 厚土Go学习笔记 | 35. web服务器实现动态路径
- 过滤器Filter精华知识点,怎能不看
- JavaMail开发示例,学习要看对资料
- 厚土Go学习笔记 | 34. 一个简单的 web 服务器实现
- sqlplus / as sysdba无法登录的奇怪报错 (r8笔记第36天)
- JSP与EL表达式重点学习笔记(1)
- R语言读CSV、txt文件方式以及read.table read.csv 和readr(大数据读取包)
- JSP与EL表达式重点学习笔记(2)
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- Linux sudo 漏洞可能导致未经授权的特权访问
- 在Linux中如何轻松删除源安装的软件包
- linux系统 java环境变量的配置方法
- Apache 文件上传与文件下载案例详解
- 前端CLI脚手架思路解析并从0到1搭建
- Linux中搭建完整的samba服务器全攻略(centos版)
- Linux 命令行通配符及转义符的实现
- Linux采用双网卡bond、起子接口的方式
- 在Linux分区或逻辑卷中创建文件系统的方法
- Linux下通过sed命令对kv方式的配置文件进行修改
- Linux中将txt导入到mysql的方法教程
- LNMP部署及HTTPS服务开启教程
- 在 Linux 上锁定虚拟控制台会话的实现方法
- Linux中split大文件分割和cat合并文件详解
- centos下安装配置phpMyAdmin的方法步骤