注册 登录
编程论坛 SQL Server论坛

【求助】正在学习触发器

a296774 发布于 2015-12-23 23:19, 3001 次点击
建立一个instead of触发器,当SC表中某门课程的选课人数到达4的时候,触发,不允许再增加这门课程的选课记录。
   
            SC
kecheng   xuehao    chengji          /*课程 学号 成绩*/
math       0012      43.1
math       0013      23.1
math       0034      23.4
science    0021      32.6
science    0072      45.3
science    0073      56.7
chinese    0023      34.5
chinese    0043      21.56

4 回复
#2
kinvanhon2015-12-24 08:23
if (object_id('tgr_inteadOf_insertSC', 'TR') is not null)
    drop tgr_inteadOf_insertSC
go
create tgr_inteadOf_insertSC
on SC
    instead of insert
as
    declare @kecheng varchar(20);
    declare @recCount int;
    select @kecheng=kecheng from inserted
    select @recCount=count(*) from SC where kecheng=@kecheng
    if @recCount>=4
        print '已超过最大选课人数'
    else
    begin
        insert into SC select kecheng,xuehao,chengji from inserted
        print '选课成功'
    end
go

[此贴子已经被作者于2015-12-24 12:38编辑过]

#3
a2967742015-12-24 12:30
回复 2楼 kinvanhon
可以使用rollback来阻止它继续插入吗?
#4
kinvanhon2015-12-24 12:40
回复 3楼 a296774
不用阻止,当有4条记录时都不执行insert
#5
a2967742015-12-24 15:57
回复 4楼 kinvanhon
好的,谢谢你
1