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’
然后接着还是begin和end,不同的是加了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
完结~
本文由 京廊文化根据互联网搜索查询后整理发布,旨在分享有价值的内容,本站为非营利性网站,不参与任何商业性质行为,文章如有侵权请联系删除,部分文章如未署名作者来源请联系我们及时备注,感谢您的支持。
本文链接: /bangong/15959.html