Java基础90 MySQL触发器
1、创建触发器
CREATE TRIGGER trigger_name
trigger_time
trigger_event ON tbl_name
FOR EACH ROW
trigger_stmt;
其中:
trigger_name:触发器名称,用户自行指定;
trigger_time:触发时机,取值为 BEFORE 或 AFTER;
trigger_event:触发事件,取值为 INSERT、UPDATE 或 DELETE;
tbl_name:建立触发器的表名,即在哪张表上建立触发器;
trigger_stmt:触发器程序体,可以是一句SQL语句,或者用 BEGIN 和 END 包含的多条语句。
由此可见,可以建立6种触发器,即:BEFORE INSERT、BEFORE UPDATE、BEFORE DELETE、AFTER INSERT、AFTER UPDATE、AFTER DELETE。
-- 创建触发器
CREATE TRIGGER trig_employeeAdd AFTER INSERT ON employee FOR EACH ROW -- 当往employee表中插入一条记录后,触发触发器trig_employeeAdd自动向test_log表中插入一条数据
INSERT INTO test_log(coutent,insert_time) VALUES('员工表插入了一条记录',CURDATE());
结果图:

2、查看触发器
SHOW TRIGGERS [FROM schema_name];
其中:schema_name 即 Schema 的名称,在 MySQL 中 Schema 和 Database 是一样的,也就是说,可以指定数据库名,这样就
不必先“USE database_name;”了。
-- 查看触发器
SHOW TRIGGERS FROM tt; -- 查看指定数据库(tt)中所有触发器
结果图:

3、删除触发器
DROP TRIGGER trigger_name;
其中:trigger_name是触发器的名称
-- 删除触发器
DROP TRIGGER trig_employeeAdd; -- 删除指定触发器
mysql触发器可参考:https://www.cnblogs.com/duodushu/p/5446384.html
4、附录

4.1、创建日志表
-- 创建日志表
CREATE TABLE test_log
(
id INT PRIMARY KEY AUTO_INCREMENT,
coutent VARCHAR(64),
insert_time DATE
);
4.2、创建触发器
4.2.1、添加操作
-- 需求:当往员工表中添加一条数据之后,希望mysql同时自动往日志表中插入数据
-- 创建触发器(添加)
CREATE TRIGGER trig_employeeAdd AFTER INSERT ON employee FOR EACH ROW -- 当往employee表中插入一条记录后,触发触发器trig_employeeAdd自动向test_log表中插入一条数据
INSERT INTO test_log(coutent,insert_time) VALUES('员工表插入了一条记录',CURDATE()); -- CURDATE():当前系统日期
-- 向员工表中添加一条数据
INSERT INTO employee VALUES(5,'丽丽',1);
结果图:

4.2.2、修改操作
-- 创建触发器(修改)
CREATE TRIGGER tri_employeeUpd AFTER UPDATE ON employee FOR EACH ROW
INSERT INTO test_log(coutent,insert_time) VALUES('员工表修改了一条记录',CURDATE());
-- 向员工表中修改一条数据
UPDATE employee SET emplName="jack" WHERE id = 5;
结果图:

4.2.3、删除操作
-- 创建触发器(删除)
CREATE TRIGGER tri_employeeDel AFTER DELETE ON employee FOR EACH ROW
INSERT INTO test_log(coutent,insert_time) VALUES('员工表删除了一条记录',CURDATE());
-- 向员工表中删除一条数据
DELETE FROM employee WHERE id = 5;
结果图:

|
原创作者:DSHORE 作者主页:http://www.cnblogs.com/dshore123/ 原文出自:https://www.cnblogs.com/dshore123/p/10562468.html 欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!) |
Java基础90 MySQL触发器的更多相关文章
- Java基础86 MySQL数据库基础知识
本文知识点(目录): 1.MySQL数据库的概述 2.MySQL数据库的管理[对数据库的操作](查询.删除.创建数据库,以及查询和修改数据库的编码模式) 3.表的管理[对数据库 表的操作] ...
- Java基础89 MySQL存储过程
1.MySQL存储过程 1.1.什么是存储过程 带有逻辑的sql语句:带有流程控制语句(if while)等等 的sql语句 1.2.存储过程的特点 1)执行效率非常快,存储过程是数据库的服 ...
- Java基础87 MySQL数据约束
1.默认值 -- 创建表student1,设置address字段有默认值 create table student1 ( id int, name ), address ) default '广东省深 ...
- Java基础之MySQL数据库与JDBC
一.数据库 DBMS 数据库管理系统 是由多个程序构成的专门用来管理大量数据的计算机系统 Server 提供数据存储.检索.计算等服务的网络程序+系统服务 Notifier ...
- Java基础92 MySQL插入当前系统时间
1.时间格式 用yyyy表示年份(year). -- y 表示年的最后一位,yy 表示年的最后2位,yyy 表示年的最后3位,yyyy 用4位数表示年用MM表示月份(month).-- mm 用2位 ...
- Java基础91 mysql的用户权限设置问题
1.概述 1)MySQL数据库中root用户具有最高的权限(超级用户),可以对任何数据库,任何表进行操作. 2)权限账户,只拥有部分权限(CRUD) .例如:只能操作某个数据库的某张表等等. 2.my ...
- ava基础MySQL存储过程 Java基础 JDBC连接MySQL数据库
1.MySQL存储过程 1.1.什么是存储过程 带有逻辑的sql语句:带有流程控制语句(if while)等等 的sql语句 1.2.存储过程的特点 1)执行效率非常快,存储过程是数据库的服 ...
- JAVA基础(代码)练习题61~90
JAVA基础 61.设计一个方法打印数组{'a','r','g','s','e','r'}中下标为1和3的的元素 package Homework_90; /** * 设计一个方法打印数组{'a',' ...
- 尚学堂JAVA基础学习笔记
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...
随机推荐
- 浅谈final修饰的变量
一直大概的知道final关键字的作用,但是自己实际工作中却很少用,除非在声明一些常量值的时候,今天忽然自己在项目中用一个map进行存储一些值.一开始我只是用private修饰的,心里想的是如果fina ...
- CUDA ---- 线程配置
前言 线程的组织形式对程序的性能影响是至关重要的,本篇博文主要以下面一种情况来介绍线程组织形式: 2D grid 2D block 线程索引 矩阵在memory中是row-major线性存储的: 在k ...
- 【bzoj1044】木棍分割
Description 有n根木棍, 第i根木棍的长度为Li,n根木棍依次连结了一起, 总共有n-1个连接处. 现在允许你最多砍断m个连接处, 砍完后n根木棍被分成了很多段,要求满足总长度最大的一段长 ...
- 【转】树莓派Raspberry Pi - 还原已经装过系统的TF卡
想给树莓派换个系统的话,需要先把已经装过系统的TF卡进行还原,这里使用最简单粗暴无脑的方法: 1,下载安装Win32 Disk Imager(一般已经装过一次系统后,这个东西都有) 2,下载boots ...
- 滥用基于资源约束委派来攻击Active Directory
0x00 前言 早在2018年3月前,我就开始了一场毫无意义的争论,以证明TrustedToAuthForDelegation属性是无意义的,并且可以在没有该属性的情况下实现“协议转换”.我相信,只要 ...
- PHP用户输入安全过滤和注入攻击检测
摘抄自ThinkPHP /** * 获取变量 支持过滤和默认值 * @param array $data 数据源 * @param string|false $name 字段名 * @param mi ...
- Luogu2661 信息传递(图论)
Luogu2661 信息传递(图论) Description 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti ...
- (转)Maven学习总结(七)——eclipse中使用Maven创建Web项目
孤傲苍狼只为成功找方法,不为失败找借口! Maven学习总结(七)——eclipse中使用Maven创建Web项目 一.创建Web项目 1.1 选择建立Maven Project 选择File -&g ...
- python的WSGI接口
WSGI:Web Server Gateway Interface. WSGI是为python语言定义的web服务器和web应用程序或框架之间的一种简单而实用的接口.wsgi是一个web组件的接口规范 ...
- 命令行 设置redis 时间
> set name jack OK > expire jack (integer) > ttl jack (integer) - > expire name (integer ...