[{"createTime":1735734952000,"id":1,"img":"hwy_ms_500_252.jpeg","link":"https://activity.huaweicloud.com/cps.html?fromacct=261f35b6-af54-4511-a2ca-910fa15905d1&utm_source=V1g3MDY4NTY=&utm_medium=cps&utm_campaign=201905","name":"华为云秒杀","status":9,"txt":"华为云38元秒杀","type":1,"updateTime":1735747411000,"userId":3},{"createTime":1736173885000,"id":2,"img":"txy_480_300.png","link":"https://cloud.tencent.com/act/cps/redirect?redirect=1077&cps_key=edb15096bfff75effaaa8c8bb66138bd&from=console","name":"腾讯云秒杀","status":9,"txt":"腾讯云限量秒杀","type":1,"updateTime":1736173885000,"userId":3},{"createTime":1736177492000,"id":3,"img":"aly_251_140.png","link":"https://www.aliyun.com/minisite/goods?userCode=pwp8kmv3","memo":"","name":"阿里云","status":9,"txt":"阿里云2折起","type":1,"updateTime":1736177492000,"userId":3},{"createTime":1735660800000,"id":4,"img":"vultr_560_300.png","link":"https://www.vultr.com/?ref=9603742-8H","name":"Vultr","status":9,"txt":"Vultr送$100","type":1,"updateTime":1735660800000,"userId":3},{"createTime":1735660800000,"id":5,"img":"jdy_663_320.jpg","link":"https://3.cn/2ay1-e5t","name":"京东云","status":9,"txt":"京东云特惠专区","type":1,"updateTime":1735660800000,"userId":3},{"createTime":1735660800000,"id":6,"img":"new_ads.png","link":"https://www.iodraw.com/ads","name":"发布广告","status":9,"txt":"发布广告","type":1,"updateTime":1735660800000,"userId":3},{"createTime":1735660800000,"id":7,"img":"yun_910_50.png","link":"https://activity.huaweicloud.com/discount_area_v5/index.html?fromacct=261f35b6-af54-4511-a2ca-910fa15905d1&utm_source=aXhpYW95YW5nOA===&utm_medium=cps&utm_campaign=201905","name":"底部","status":9,"txt":"高性能云服务器2折起","type":2,"updateTime":1735660800000,"userId":3}]
触发器定义:一种特殊类型的存储过程,不同于存储过程。存储过程 调用名称执行,触发器的调用 通过事件触发 自动调用执行 。
触发器分类:1、DML触发器
数据库再创建触发器时会在内存中创建了两个专用表﹕Inserted表和Deleted表。这两个表由系统来维护,当触发器 被激发完成后,与触发器相关的Inserted和Deleted这两个表也被删除
2、DDL触发器
DML(Data Manipulation Language)触发器
对表操作inserteddeleted
insert 存放插入的数据无
update存放更新后的数据存放更新前的数据
delete无存放被删除的数据
inserted 存放插入或更新后数据
deleted 存放更新前或删除的数据
今天我先介绍都DML触发器-插入和更新操作
DML触发器分为两种 :
after 触发器 insert 、update、delete {执行完操作后,再去执行触发器本身}
instered of 触发器 insert 、update、delete {只执行触发本身}
两者是相互对立,最好不要在一张表中同时创建这两种触发器。
--创建 after insert 触发器:对表操作(我们对表执行插入操作时就会执行)
创建语法格式:
create trigger 触发器名称
on 表名
after insert /for insert
as
T-SQL 语句
go
执行效果:
alter trigger ...(对创建的触发器某些操作不满意,重新修改 )
触发 触发器 insert into 表名 (字段、字段、字段 ..)values(对应字段插入值) 为什么执行插入insert ,因为开始我就是创建的是
after insert 触发器 。
创建 after update 触发器 (我们对表执行更新操作时就会执行)
学习触发器之前我们只能看见update 更新后的数据
create trigger 创建触发器名称
on dbo.test
after update
as
--T-sql
go
执行效果:
本次执行过程执行的是 update(更新操作),而且还做了,将进行修改的数据,在修改前进行了,保存,通过语句 select * into 表名 from
deleted (将更新前的数据保存在了testbackup表中)
因为刚才讲过了,after 触发器 insert 、update、delete {执行完操作后,再去执行触发器本身},我们在T-sql
语句中设置了会将更新前的数据保存在,testbackup 表中,所以我们会先去执行select*into testbackup from deleted
{先把更新前数据保存后},再去执行 插入id=3 MNname= SQLserver age=22 这条语句。
我们去看一下testbackup这张表装的是什么
没错装的就是执行更新操作前 标识符 id= 3 的信息行装的数据 ,它原来是 MNname = 计算机 ,age= 3,我们将他更新成了 MNname
=SQLserver ,age= 22 。
通过这个操作 ,我们也明白了 更新操作其实就是,先删除再去插入。
总结: 本次DML触发器,我了解学习的也是很模糊,有些地方也没有给大家解释清楚,不过没有关系,同学们有什么看不懂欢迎发送私信提问,共同努力共同进步。