数据库触发器

select * from info

select * from work

select * from family

 

delete from INFo where code=‘p002‘

 

drop trigger tr_info_add  --删除触发器

go

alter trigger tr_info_delete on info 

instead of delete

as

declare @code varchar(50)

select @code=code from deleted

 

delete from work where infocode=@code

delete from family where infocode=@code

delete from info where code=@code

go

 

 

go

--案例一:

alter trigger tr_info_add on info

for insert,delete

as

print ‘改变了一条数据

go

--案例二:建一个触发器,在触发器中用select显示inserted表和deleted表中的数据。

--案例三:水果表改变numbers列时,向orderdetails表中添加数据。

--案例四:instead of触发器,删除info表的数据时,先删除workfamily的数据,再删info相应的数据。

 

insert into INFO values(‘p006‘,‘李四‘,‘1‘,‘n002‘,‘1999-3-2‘)

 

go

alter trigger tr_fruit_update on fruit

for update

as

--当水果表修改,就向fruitdetails中添加数据

--水果代号--fruitcode;number的减少量--count

 

--把修改的对应数据取出来。水果代号,数量差

declare @code varchar(50)

declare @num1 int

declare @num2 int 

declare @num int

select @code=ids ,@num1=numbers from deleted

select @num2=numbers from inserted

set @num=@num1-@num2

 

 

--orderdetails表中执行插入操作

insert into orderdetails (fruitcode,[count]) values(@code,@num)

 

--在触发器中有两个临时表。表名是:inserted,deleted,这两个临时表中最多只有一条数据。

--print ‘deleted表的数据:

--select * from deleted

--print ‘inserted表中的数据

--select * from inserted

 

go

 

update Fruit set Numbers=95 where Ids=‘k003‘

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。