加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLSERVER简单触发器

发布时间:2020-12-12 15:21:23 所属栏目:MsSql教程 来源:网络整理
导读:? INSERT 触发器 ??? INSERT 及 UPDATE 触发器经常用于检测触发器所监控表的列及其数据是否符合所定义的规则。它们可以在数据输入表之前,对其进行在定义引用完整性时无法完成的约束检验。 ??? 下面以学生数据库 student 为例来介绍 INSERT 触发器的使用。该

?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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读