mysql 内置功能 触发器 实验
#准备表
命令表
CREATE TABLE cmd (
id INT PRIMARY KEY auto_increment,
USER CHAR (32),
priv CHAR (10),
cmd CHAR (64),
sub_time datetime, #提交时间
success enum ('yes', 'no') #0代表执行失败
);
priv 字段是权限
sucess enum 是命令执行成功与否
另外一张命令错误表 记录命令出错信息
err_cmd 命令命
err_time 命令的提交时间
CREATE TABLE errlog (
id INT PRIMARY KEY auto_increment,
err_cmd CHAR (64),
err_time datetime
);
这两张表都有关系的
插入记录到cmd表 如果插入的命令记录有错误 这条错误的记录会插入到errlog表里
在插入完之后做触发器,判断这条命令是否错误 插完之后sueess字段如果为no,意味着这条命令记录是错误的,就把错误记录写入到,
errlog表里
#创建触发器
触发器提供两个对象 1.NEW 代表新增进来的记录 2. old 代表之前老的记录 insert 都是新的记录 都用new对象
alter 是用到老记录和新纪录 所以修改时候涉及用到old、new对象 new对象下面有相应的属性 new.id 就是调新建记录的id new.user 调新增记录的user
new.success
delimiter // # 设置mysql结束语句符号为//
CREATE TRIGGER tri_after_insert_cmd AFTER INSERT ON cmd FOR EACH ROW
BEGIN
IF NEW.success = 'no' THEN #等值判断只有一个等号
INSERT INTO errlog(err_cmd, err_time) VALUES(NEW.cmd, NEW.sub_time) ; #必须加分号,这里加;也不会中断mysql语句
END IF ; #必须加分号
END// # 结束触发器语句
delimiter ; # 把mysql 结束语句符号 还原为;
上面的中间代码的语法类似于shell
判断这个new.success字段新增进来的记录是否为no 如果为no执行then 下面的代码
if new.success ='no' then
执行的代码
end if ; 结束语句
mysql 结束语句符号都是;
delimiter 作用是声明sql语句的结束符号 用任意符号都可以
delimiter // 声明mysql结束语句符号 用// 不用;
#往表cmd中插入记录,触发触发器,根据IF的条件决定是否插入错误日志
INSERT INTO cmd (
USER,
priv,
cmd,
sub_time,
success
)
VALUES
('egon','','ls -l /etc',NOW(),'yes'),
('egon','','cat /etc/passwd',NOW(),'no'),
('egon','','useradd xxx',NOW(),'no'),
('egon','','ps aux',NOW(),'yes'); 插入后触发触发器
#查询错误日志,发现有两条
mysql> select * from errlog;
+----+-----------------+---------------------+
| id | err_cmd | err_time |
+----+-----------------+---------------------+
| 1 | cat /etc/passwd | 2018-11-12 05:28:46 |
| 2 | useradd xxx | 2018-11-12 05:28:46 |
+----+-----------------+---------------------+
2 rows in set (0.00 sec)
mysql 内置功能 触发器 实验的更多相关文章
- mysql 内置功能 触发器介绍
		使用触发器可以在用户对表进行[增.删.改]操作时前后定义一些操作,注意:没有查询 创建触发器 create trigger 触发器的名字 之前(before)或者之后(after) 行为(inser ... 
- mysql 内置功能目录
		mysql 内置功能 视图介绍 mysql 内置功能 视图 使用 mysql 内置功能 触发器介绍 mysql 内置功能 触发器 实验 mysql 内置功能 事务 介绍 mysql 内置功能 存储过程 ... 
- mysql 内置功能 存储过程 目录
		mysql 内置功能 存储过程介绍 mysql 内置功能 存储过程 创建无参存储过程 mysql 内置功能 存储过程 创建有参存储过程 mysql 内置功能 存储过程 删除存储过程 
- mysql 内置功能 存储过程介绍
		存储过程介绍 就是mysql内置功能把逻辑写好 的功能给封装好,封装成一个接口名,把接口名丢给应用程序,应用程序直接调用接口名实现一系列增删改查功能 这个接口叫存储过程 基于存储过程封装成一个功能 存 ... 
- MySQL:记录的增删改查、单表查询、约束条件、多表查询、连表、子查询、pymysql模块、MySQL内置功能
		数据操作 插入数据(记录): 用insert: 补充:插入查询结果: insert into 表名(字段1,字段2,...字段n) select (字段1,字段2,...字段n) where ...; ... 
- mysql六:mysql内置功能(视图、触发器、事务、存储过程、函数)
		一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 通过使用视图可以把查询过程中的 ... 
- 数据库——mysql内置功能(11)
		1.视图 视图是一个虚拟表(非真实存在),其本质是(根据SQL语句获取动态的数据集,并未其命名),用户使用时只需使用(名称)即可获取结果集,可以将该结果集当做表来使用 使用视图我们可以把查询过程中的临 ... 
- MySQL内置功能之事务、函数和流程控制
		主要内容: 一.事务 二.函数 三.流程控制 1️⃣ 事务 一.何谓事务? 事务用于将某些操作的多个SQL作为原子性操作,一旦有某一个出现错误,即可回滚到原来的状态,从而保证数据库数据完整性. # ... 
- Mysql内置功能《五》 函数
		一 函数 MySQL中提供了许多内置函数,例如: 一.数学函数 ROUND(x,y) 返回参数x的四舍五入的有y位小数的值 RAND() 返回0到1内的随机值,可以通过提供一个参数(种子)使RAND( ... 
随机推荐
- Elastic Search 5.4.3 java api   入门
			首先介绍一点,es的版本从之前的2.x跳跃到5.x,很多插件要保持一致,不然会产生很多版本不兼容的问题. 首先看一个demo先熟悉一下, 具体代码在git服务器上: https://github.co ... 
- js当中null和{}区别
			{}是一个不完全空的对象,因为他的原型链上还有Object呢,而null就是完全空的对象,啥也没有,原型链也没有,所以null instanceof Object === false;[]就更不用说了 ... 
- javaweb项目中表单生成的验证码以及校验
			首先先来看一下项目的结构吧,有两个servlet,一个是进行验证码的生成以及存储的,一个是进行校验的,还有一个jsp页面是用来实现form表单的书写和展示: 我们只需要看这三个就行了,其他的自动忽略: ... 
- codeforces水题100道 第七题 Codeforces Round #270 A. Design Tutorial: Learn from Math (math)
			题目链接:http://www.codeforces.com/problemset/problem/472/A题意:给你一个数n,将n表示为两个合数(即非素数)的和.C++代码: #include & ... 
- Find–atime –ctime –mtime的用法与区别总结
			转自 周五有同事问起find命令中-mtime n.-mtime –n以及-mtime +n的用法区别,当时虽然记得这里n是n个24个小时的意思,也是对所有这几个属性详细的用法却一知半解,索性周末仔细 ... 
- Ubuntu 最好用的CHM阅读器KchmViewer
			直接在“ubuntu软件中心”进行搜索安装 为什么说它是最好用?很简单!可同时显示目录和内容,中文没乱码!能实现这两点的竞争对手已经不多了,至少我是没发现.什么chmsee,gnochm,都有乱码.虽 ... 
- CF 445A DZY Loves Chessboard
			A. DZY Loves Chessboard time limit per test 1 second memory limit per test 256 megabytes input stand ... 
- 2015.7.12js-11(DOM基础)
			1.childNodes,获取子节点,本身就是一个数组,可以通过下标childNodes[i]来获取某个子节点. alert(obj.childNodes.length); //高级浏览器会有空白节点 ... 
- 检查mono兼容性的工具MOAM
			mono的迁移工具,可以帮助我们从windows平台迁移到Linux平台,可以用来检测特定的.net的dll或exe程序对mono的兼容性,并能够给出不兼容的方法 项目地址 MoMA 项目介绍 MoM ... 
- iOS uitextfield长度限制
			[textUsername addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEd ... 
