第一个问题加一句:
where id=inserted.id

解决方案 »

  1.   

    呵呵,不要搬出大叔大伯。1、
    creat trigger a on table1
     for insert,update
    as
    update table1
    set 更新日期=getdate()
    form inserted i,table1 b
    where i.key=b.key           -----不要告诉我你这个表没有主键
    go2、
    creat trigger a on b
     for insert,update
    as
     if exists (select 1 from inserted i,a where a.试卷编号=i.试卷编号
         and a.总成绩<>i.A题得分+i.B题得分+...+i.N题得分 )
         ROLLBACK TRANSACTION
    go
      

  2.   

    2、有两个表a,b。a中有一个总成绩字段,试卷编号字段,b中有各题得分字段。试卷编号字段
    触发器要求:当添加记录时,自动检测相同试卷编号的各题得分之和是否等于相同试卷编号的总成绩!!!creat trigger a on b
     for insert,update
    as
     if exists (select 1 from inserted i,a where a.试卷编号=i.试卷编号
         and a.总成绩<>i.A题得分+i.B题得分+...+i.N题得分 )
         ROLLBACK TRANSACTION
    go
     其中A题,B题是什么意思??
       if exists (select 1 from inserted i,a where a.试卷编号=i.试卷编号
         and a.总成绩<>(select sum(各题得分)from inserted i inner join a on i.试卷编号=b.试卷编号) )
      达不到目的,可以再教教 我么???拜托,大哥(或是大伯)
      

  3.   

    b表字段:试卷编号,试题编号,试题内容,参考分数(定义这题的分数),……
    a表字段:试卷编号,试卷总分,考试科目,考试时间
    触发器:a.试卷总分要保证与b相同试卷编号的个体参考分数之合相等。
      

  4.   

    怎么没有得分,先当参考分数为得分
    2、
    creat trigger trg_a on a
     for insert,update
    as
     select 试卷编号,sum(参考分数) as 得分 into #Temp from b
       where 试卷编号 in (select 试卷编号 from inserted)
       
     if exists (select 1 from inserted i,#Temp t where t.试卷编号=i.试卷编号
         and i.总成绩<>t.得分 )
         ROLLBACK TRANSACTION
    go
      

  5.   

    真应该给yang多加点分的,但心有余力不足!:)
      

  6.   

    low(每走一步都那么难) :
       你的这个问题很有意思,我现在的毕业设计是搞VB和SQLSERVER的,不过不精,触发器一直不会用啊。就以你的问题为例,提几个问题
          if exists (select 1 from inserted i,#Temp t where t.试卷编号=i.试卷编号
         and i.总成绩<>t.得分 )
         ROLLBACK TRANSACTION
    go
       上面代码中的SELECT 1 是什么意思?
      ROLLBACK TRANSACTION  又是什么意思?
     触发器代码编写好了以后,又怎么使用呢? 
      

  7.   

    可以用*代替,只是为了判断是否存在这样的记录:总分不等于各题得分之和。rallback transaction是回滚的意思。如果你接触过数据库,不应该不知道回滚吧。触发器和存储程序不同之处在于存储程序要经过调用才能执行。而触发器在本身编辑时就已经指明了执行条件(即from 或after inserte 、update、delete)。当你为一个表编写触发器后(当然要语法通过),你就可以对这个表进行操作,当满足你触发器的出发条件时,系统自动执行触发器!