当前位置: 代码迷 >> Sql Server >> 问下,触发器里面究竟如何判断字段为空
  详细解决方案

问下,触发器里面究竟如何判断字段为空

热度:8   发布时间:2016-04-24 09:51:51.0
问下,触发器里面究竟怎么判断字段为空?
比如
select Cno from Xuanke where Sno=@Sno
我用if判断
if(select Cno from Xuanke where Sno=@Sno)
总是返回1,然后if就开始执行了
就算写成count(Cno),返回值也一直是1
究竟怎么判断,我弄了一整天,百度了半天,都找不到方法
我主要是判断该学生在选课表里是否已有选课记录,有选课记录就判断上课时间冲突,没有就end不执行任何操作
------解决思路----------------------



alter trigger screentime
on Xuanke
instead of  insert
  as 
  begin
  begin tran

    if exists(select * from Xuanke  as a join inserted as b on a.Sno=b.Sno  and  a.Cno is not null)
      begin
        print '改学生已有课'
        rollback tran
      end  
      else 
      begin
      insert into xuanke select * from inserted
      print'插入成功'
      commit
      end
  end
go   

insert into Xuanke values(101,01,80)
insert into Xuanke values(101,02,80)
--这2句进行分别执行。第一句没问题。但是执行第二句就会提示已经有课。会插入不成功

这里必须用BEFORE 触发器。用FOR 触发器。表示触发器会在插入之后执行。你已经把记录插入到表里面了。
这样你在用IF 判断。表里面肯定存在记录啊。所有都是返回1 

  相关解决方案