#准备表
命令表
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 内置功能 触发器 实验的更多相关文章

  1. mysql 内置功能 触发器介绍

    使用触发器可以在用户对表进行[增.删.改]操作时前后定义一些操作,注意:没有查询 创建触发器 create trigger 触发器的名字 之前(before)或者之后(after)  行为(inser ...

  2. mysql 内置功能目录

    mysql 内置功能 视图介绍 mysql 内置功能 视图 使用 mysql 内置功能 触发器介绍 mysql 内置功能 触发器 实验 mysql 内置功能 事务 介绍 mysql 内置功能 存储过程 ...

  3. mysql 内置功能 存储过程 目录

    mysql 内置功能 存储过程介绍 mysql 内置功能 存储过程 创建无参存储过程 mysql 内置功能 存储过程 创建有参存储过程 mysql 内置功能 存储过程 删除存储过程

  4. mysql 内置功能 存储过程介绍

    存储过程介绍 就是mysql内置功能把逻辑写好 的功能给封装好,封装成一个接口名,把接口名丢给应用程序,应用程序直接调用接口名实现一系列增删改查功能 这个接口叫存储过程 基于存储过程封装成一个功能 存 ...

  5. MySQL:记录的增删改查、单表查询、约束条件、多表查询、连表、子查询、pymysql模块、MySQL内置功能

    数据操作 插入数据(记录): 用insert: 补充:插入查询结果: insert into 表名(字段1,字段2,...字段n) select (字段1,字段2,...字段n) where ...; ...

  6. mysql六:mysql内置功能(视图、触发器、事务、存储过程、函数)

    一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 通过使用视图可以把查询过程中的 ...

  7. 数据库——mysql内置功能(11)

    1.视图 视图是一个虚拟表(非真实存在),其本质是(根据SQL语句获取动态的数据集,并未其命名),用户使用时只需使用(名称)即可获取结果集,可以将该结果集当做表来使用 使用视图我们可以把查询过程中的临 ...

  8. MySQL内置功能之事务、函数和流程控制

    主要内容: 一.事务 二.函数 三.流程控制 1️⃣  事务 一.何谓事务? 事务用于将某些操作的多个SQL作为原子性操作,一旦有某一个出现错误,即可回滚到原来的状态,从而保证数据库数据完整性. # ...

  9. Mysql内置功能《五》 函数

    一 函数 MySQL中提供了许多内置函数,例如: 一.数学函数 ROUND(x,y) 返回参数x的四舍五入的有y位小数的值 RAND() 返回0到1内的随机值,可以通过提供一个参数(种子)使RAND( ...

随机推荐

  1. java的两种冒泡算法

    所谓的冒泡算法,就是给数组进行排序,可以根据以小到大的顺序,也可以根据以小到大的顺序,在数组的封装类java.util.Arrays通过sort方法进行按升序的排序.那不用类的话怎么进行呢? 思路一: ...

  2. linux批量修改文件名

    源文件; [root@test_machine fuzj]# ls fuzj-1.txt  fuzj-2.txt  fuzj-3.txt  fuzj-4.txt  fuzj-5.txt  fuzj-6 ...

  3. ATM技术基本原理

    1 术语.定义和缩略语 1.1 术语.定义 术语/定义 说    明 ATM层 位于B-ISDN/ATM网络协议参考模型的第二层,完成交换.路由选择和信元复用功能.ATM层的基本处理单位是信元. AA ...

  4. linux mutex

    #include <iostream> #include <queue> #include <cstdlib> #include <unistd.h> ...

  5. HR别掉坑里了,送你最精确的计薪算法!

      月工资的计算方式有多种多样.即便是资深的HR,也会犯常识性的错误,正算反算,哪一个方法更适合,有时还会容易出现数字偏差,回想一下,你们公司的工资是如何计算的? 第一 劳动工资计算标准按几天计算 根 ...

  6. sencha touch 坑爹的Panel,数据不显示了...

    一位同学问我一个问题: sencha touch中xtype创建dataview死活不显示!!版本2.3.1,MVC模式,sencha touch创建目录程序很简单,主界面一个tabPanel,两个分 ...

  7. 查看UUID的方法

    # blkid /dev/sdc1: UUID="6dfada2a-3a79-46b9-8e5d-7e8b39eba0da" TYPE="ext4" /dev/ ...

  8. vue--拖动排序

    https://blog.csdn.net/jx950915/article/details/79803485?from=singlemessage

  9. 服务器推技术研究Comet

    服务器推技术 最近参与的一个关于股票的项目,有这样一个需求.服务器需要主动推送给客户端消息.这和传统的Web模式不同.传统的Web系统,客户端和服务器的交互是这样的: 客户端先和服务器建立一个TCP连 ...

  10. hdu 2444 The Accomodation of Students 【二分图匹配】

    There are a group of students. Some of them may know each other, while others don't. For example, A ...