标题:【求助】正在学习触发器
只看楼主
a296774
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-12-22
结帖率:100%
已结贴  问题点数:10 回复次数:4 
【求助】正在学习触发器
建立一个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

搜索更多相关主题的帖子: instead 触发器 记录 课程 
2015-12-23 23:19
kinvanhon
Rank: 5Rank: 5
来 自:战争学院
等 级:贵宾
威 望:16
帖 子:99
专家分:258
注 册:2014-10-7
得分:0 
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编辑过]

2015-12-24 08:23
a296774
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-12-22
得分:0 
回复 2楼 kinvanhon
可以使用rollback来阻止它继续插入吗?
2015-12-24 12:30
kinvanhon
Rank: 5Rank: 5
来 自:战争学院
等 级:贵宾
威 望:16
帖 子:99
专家分:258
注 册:2014-10-7
得分:10 
回复 3楼 a296774
不用阻止,当有4条记录时都不执行insert
2015-12-24 12:40
a296774
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-12-22
得分:0 
回复 4楼 kinvanhon
好的,谢谢你
2015-12-24 15:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-460513-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.180877 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved