SqlServer语句创建触发器的简单问题

发布网友 发布时间:2022-04-22 07:56

我来回答

2个回答

热心网友 时间:2022-04-08 09:47


--学生班级表
create table NameClass(
NameClassid int identity(1,1) not null,--学生班级表主键
name nvarchar(100),  ---学生名称
class nvarchar(100), --班级名称
)


--班级和学生数量表
create table ClassNum(
ClassNumid int identity(1,1) not null,--班级和学生数量表主键
class nvarchar(100),                  --班级名称
number int,                           --学生数量
)
---两张做初始数据
insert into NameClass(name,class) values('张山','一班')
insert into NameClass(name,class) values('李四','一班')
insert into NameClass(name,class) values('王五','一班')
insert into NameClass(name,class) values('赵六','一班')
insert into NameClass(name,class) values('钱七','一班')
insert into NameClass(name,class) values('孙八','一班')

insert into NameClass(name,class) values('张八戒','二班')
insert into NameClass(name,class) values('李悟能','二班')
insert into NameClass(name,class) values('王悟空','二班')
insert into NameClass(name,class) values('赵姗姗','二班')
insert into NameClass(name,class) values('钱夺宝','二班')
insert into NameClass(name,class) values('孙上进','二班')


insert into ClassNum(class,number) values('一班',6)
insert into ClassNum(class,number) values('二班',6)

 
 
--查看刚才初始化的数据
 select * from NameClass
 select * from ClassNum
 
 --创建触发器:学生班级表中对应的班级发生变化,班级和学生数量表中对应的班级数量随之改变

if exists(select * from dbo.sysobjects where id = object_id(N'tgr_NameClass_update') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger tgr_NameClass_update

go
create trigger tgr_NameClass_update
on NameClass
   after update
as

 if update(class)
 begin
    declare 
    @num int,
    @classname nvarchar(100)
     
    declare NameClass_Cursor  cursor for  select count(class),class from NameClass group by class
    open NameClass_Cursor
    fetch next from NameClass_Cursor into @num,@classname
    while @@fetch_status=0
    begin 
    
      
          update ClassNum set number =@num where  class=@classname
            print @num
    print @classname
  
    fetch next from NameClass_Cursor into @num,@classname
       
    end 
    close NameClass_Cursor
    deallocate NameClass_Cursor
    
    
 end
    
    
    
--更新数据
update NameClass set class='二班' where NameClassid='3'
 --检查学生班级表数据
 select class,COUNT(class) from NameClass group by class
 --班级和学生数量表
 select * from ClassNum

热心网友 时间:2022-04-08 11:05

C表可以把人数字段去掉

用到的时候统计就可以了追问这是作业要求,要的是语句

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com