微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQLSERVER简单触发器

 INSERT触发器


    INSERT
UPDATE触发器经常用于检测触发器所监控表的列及其数据是否符合所定义的规则。它们可以在数据输入表之前,对其进行在定义引用完整性时无法完成的约束检验。

    下面以学生数据库student为例来介绍INSERT触发器的使用。该数据库包括三个表,分别是描述学生情况的学生档案表、描述学生成绩的生成student和。描述分组情况的分组情况gro

 

 

create table student (id numeric(1,0),name varchar(10),sex char(4),class varchar(10),gro numeric(1,0) )

create table gro (class varchar(10),num tinyint)

 

为上面的学生档案表创建一个INSERT触发器instrg,其作用是每新增一名学生而需向学生档案表中插入新行时,在分组情况表中将其所在小组的人数自动增加1

 

use mlh

Create Trigger instrg ON [dbo].[student]

FOR Insert

AS

declare @班级 varchar(50),@小组 varchar(50),@人数 tinyint

select @班级 = inserted.class,@小组 = inserted.gro from inserted

if exists(select num from gro where @班级 = gro.class and @小组= gro.gro)

begin --bg1

select @人数 = num from gro where @班级= gro.class and @小组 = gro.gro

set @人数 = @人数 + 1

update gro set num = @人数 where @班级 = gro.class and @小组 = gro.gro

end --bg1

 

else

begin --bg2

insert gro values(@班级,@小组,1)

end --bg2

 

UPDATE 触发器

Create Trigger stup On [dbo].[student]

FOR update

AS

Declare @班级 varchar(50),@小组 numeric(1,@小组= inserted.gro from inserted

if exists(select * from gro where @班级  = gro.class and @小组 = gro.gro)

begin

   update gro set gro.num = gro.num + 1 where @班级  = gro.class and @小组 = gro.gro

end

else

begin

   insert into gro values(@班级,1)

end

select @班级 = deleted.class,@小组= deleted.gro from deleted

select @人数 = gro.num from gro where  @班级  = gro.class and @小组 = gro.gro

if @人数 > 1

begin

 update gro set gro.num = gro.num - 1  where  @班级 = gro.class and @小组 = gro.gro

end

else

begin

 delete gro where @班级  = gro.class and @小组 = gro.gro

end

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐