当前位置: 首页 > 办公技巧 > 正文

excel实用办公技巧审计(SQL第31课~触发器的查看和使用,怎么进行审计功能)

  • 叁碗诸角 叁碗诸角
  • 办公技巧
  • 2023-08-15 19:37:54
  • 0

所有内容收录在合集~MySQL入门到熟练。欢迎点赞关注我哦~

Triggers 触发器

触发器听起来好像是扳机什么的,其实就是在插入,更新和删除语句前后自动执行的一堆SQL代码。

可以增强数据的一致性,打个比方,在表格数据中,一个id下可能有几笔订单,几个发票,表格里面的值是互相对应的,有一个总值。如果这个时候,添加新的记录,比如加了一行,那么总值也会有变化。

那么触发器怎么用呢?

当然也是创造出来啦 create 然后明确表名

接着就是输入之后或者之前,表示什么时候触发,也可以是更新或者删除,根据情况有:

after insert on after update on after delete on

before insert on before update on before delete on

注意上方又又又出现了begin和end,触发器的主体我们可以写任意的SQL代码来修改数据,增强一致性。可以直接写SQL代码或者调用存储过程,这次试试更新金额,增加总额

最后写引爆触发的SQL语句类型,添加在begin和end之间,创建完成。执行没有报错就是已经执行。然后注意写的时候,不要写错数据库,避免C数据库的代码写到A里面。我又一个没注意检查半天,然后更改payments表格,在invoice表格里面进行验证。

更新或者删除的时候,new更换成old,NEW.后面的点代表可以获取单独属性。补上验证的图,0改为10了。

对应的,如果是删除付款的时候,触发器这样写,表名等仅供参考

特点:

1 触发器可以更改任何表中的数据,除了这个触发器所在表。否则就会无限的循环。

2 支持行级触发器,比如执行一条update语句,影响了10行,触发器会被触发10次

3 不支持语句级触发器,执行一条update,不管这个影响几行,只触发一次

查看触发器

写好之后在左边的面板,是找不到的,

所以直接书写查看就好了,这样展现是所有的触发器

单一触发器这样写,先写like,然后是引号,里面是前缀和%,同时一定注意命名的时候,规范命名是表名_after/before_insert/delete/update的形式,刚才的名字纯属偷懒。

删除触发器

直接写,删除 if exist 表名

删除 创建应该放在同一个脚本文件中,同时录入一个源代码库中。这样有历史数据库修改记录。

审计 Auditing

初步是为一张表进行设计,后续是为多张表进行设计,不过那就需要架构的知识了。比如怎么样设计数据库?反转目前还没到那一步。

首先打开一张表,还是用create,创造一张新表。直接用大神的,然后执行,刷新,左边就出现了。

是一个像麻雀一样的表,虽然很简化,但能用啊

然后结合刚才写的触发器,更新,并在审计表中插入记录

就是添加一条insert,赋值里面都加一个new,后面加上now函数

对应的,如果是删除的,那就把new更换成old,insert换成delete,

然后重建一下触发器

重复在payments里面的添加付款记录

insert into sql_invoicing.payments

values (default,5,5,'2023-01-01',1,1)

添加成功。

然后打开刚才创建的审计表,就可以清晰的看到记录。什么时间,插入了数据,金额日期,id都在上面。

Events 增删改查

一堆执行代码,可以只执行一次,或者每月一次等时间执行

主要用来自动化数据库的维护,比如删除过期数据,将表复制到存档表,汇总数据生成报告。

第一步打开后台程度,调度器。一直执行需要执行的事件

可以看到很多内容

然后使用like操作符,找出需要找到的那个

后面自动显示的是on,开启

可以设置是开启或者关闭

SET GLOBLE event_SCHEDULEr=ON

SET GLOBLE event_scheduler=OFF

然后,可以自己创造事件

开头还是分隔符,create

后面接着名称,也是根据时间_(年月日小时分钟)_XX_XX命名

接着就是SCHEDULE

计划在时间上怎么执行,频率是怎么样

如果单次,直接定某个时间

AT ‘2023-01-01’

如果定期,EVER加区间

EVER 1hour/year等

还可以添加起始时间,结束时间

EVER 1 year ‘2023-01-01’ END ‘2033-01-01’

然后接着还是beginend,不同的是加了DO

直接用mosh写的例子

然后主体部分添加起来

回顾一下,之前的excel里面用过的函数,DATEADD,DATESUB

所以可以写

DATEADD(now(), INTERVAL- 1 YEAR)

DATESUB(now(), INTERVAL 1 YEAR)

查看事件

全部写:show events;单个事件写:show events like ‘XX%’

删除事件

DROP EVENT IF EXISTS 表名

ALTER EVENT 修改事件

ALTER EVENT 表名 DISABLE/ENABLE

完结~


最新文章