数据库中的触发器
--1.触发器的概念 trigger--2.触发器的分类--(1)DDL型触发器 create ,alter,drop--(2)DML型触发器---a.Insert插入型触发器---b.update修改型触发器---c.delete删除型触发器---d.以上的任意混合型触发器--3.特点--没有参数也没有返回值,事件驱动,自动引发--4.语法--create trigger 触发器名称--on 表
--1.触发器的概念 trigger
--2.触发器的分类
--(1)DDL型触发器 create ,alter,drop
--(2)DML型触发器
---a.Insert插入型触发器
---b.update修改型触发器
---c.delete删除型触发器
---d.以上的任意混合型触发器
--3.特点
--没有参数也没有返回值,事件驱动,自动引发
--4.语法
--create trigger 触发器名称
--on 表名
--for insert/update/delete
--as
-- sql语句
--5.注:
每个触发器都有两张特殊表 Inserted表,Deleted表
--当触发器执行完成之后,会自动消失(临时表)
--6.案例
--对于类别表添加触发器,当插入数据的时候,
--提示 '插入完成'
go
create trigger t_insertcate
on Category
for insert
as
print '插入完成'
go
create trigger t_insertcate1
on Category
for insert
as
select * from inserted
go
--1.修改型的触发器
create trigger t_updatecate
on Category
for update
as
select *from deleted
select * from inserted
go
update Category set CategoryName='触发器2'
where CategoryID=1018insert into Category values('触发器1')
go
--2.插入型的触发器
create trigger t_insert1
on product
for insert
as
begin
--查询临时表中刚刚插入的数据
select ProductID,ProductName,ProductPrice from inserted
end
--插入一条商品数据,引发insert型触发器
insert into Product values('aa',100,1000,'aaaa',1)
go
--3.删除型触发器
create trigger t_delete
on product
for delete
as
--查询临时表deleted,里面刚刚删除的那条数据
select ProductID,ProductName,ProductPrice from deleted
--从商品表中删除一条数据,出发删除型的触发器
delete from Product where ProductID=26
select * from Product
--创建一个触发器,完成删除类别的时候,自动把该
--类别下的所有商品删除
go
create trigger t_delete1
on category
for delete
as
--声明一个变量,存储刚刚删除的类别编号
declare @cid int
--1.获取刚刚删除的商品类别 -->编号
select @cid=CategoryID from deleted
--2.判断该类别下是否存在商品
if exists(select * from Product where CategoryID=@cid)
begin
--3.如果条件为true,也就意味着该类别下有商品
delete from Product where CategoryID=@cid
print '该类别下的商品已被删除成功'
end
else
print '该类别下没有商品'
--删除类别中的一条数据,引发删除型的触发器
delete from Category
where CategoryID=3
delete from Category
where CategoryID=1006
go
--使用触发器实现,在Product表中删除商品信息时,
--在OrderDetails中删除相应的商品订购信息。
create trigger t_update1
on product
for update
as
--update(指定列) 返回bool类型,如果指定列被更新,则返回true
--否则返回false
if update(store)
print 'store列被更新了'
else
print '没有被更新'
update Product set ProductPrice=100 where ProductID=16
update Product set Store=12 where ProductID=16
更多推荐
所有评论(0)