--触发器在进行工作的时候,会产生两个临时的用于记录更改前后变化的表:INSERTED表和DELETED表
use SRS
go
-- 设计一个触发器 TR_S,当在数据表 S 中删除一个学生的记录后,删除该学生在数据表 SC 中的记录。
create trigger tr_s on s
after delete
as delete from SC where SC.SNo IN(SELECT SNo FROM DELETED) go delete from s where sno='11001' select *from S select *from SC
use Sales
--1、在sales数据库中,创建触发器tri_goods,当商品销售之后,相应的库存量要有所变化 go
--方法一
create trigger tri_goods on sell
after insert
as
declare @num int
set @num =(select 数量 from Goods where 商品编号 in (select 商品编号 from inserted))
if(@num<0 )
begin
print'商品数量小于0'
rollback
end
else
begin
update Goods set 数量=数量-(select 数量 from inserted) where 商品编号 in (select 商品编号 from inserted
go
--方法二
create trigger tri_goods1 on sell
after insert
as
update Goods
set 数量=数量-(select 数量 from inserted) where 商品编号 in (select 商品编号 from inserted)
go
--方法三
create trigger tri_goods2 on sell
after insert
as
update Goods
set Goods.数量=Goods.数量-b.数量 from inserted b where Goods.商品编号 = b.商品编号
go
inse
sql server DML,DDL 触发器
最新推荐文章于 2021-12-30 09:34:14 发布
本文深入探讨了SQL Server中的两种触发器——DML(数据修改语言)触发器和DDL(数据定义语言)触发器。DML触发器在插入、更新或删除操作后自动执行,用于实现复杂的业务规则和数据验证。DDL触发器则在数据库结构发生变化,如创建、修改或删除表、视图等对象时触发,提供了一种监视和控制数据库更改的方式。通过使用这些触发器,开发者可以确保数据的完整性和一致性。

最低0.47元/天 解锁文章
1387

被折叠的 条评论
为什么被折叠?



