SQLSERVER简单触发器
?INSERT触发器
??? 下面以学生数据库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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |