解决方案 »

  1.   

    你是要计算总分吗?
    如果是计算总分的话,可以考虑在设计表的时候使用计算列实现。
    [总成绩] as [语文成绩]+[数学成绩]+[英语成绩]+[文综成绩] PERSISTED
      

  2.   


    create table [学生考试信息表] (
    [考号] varchar(20) not null,
    [姓名] varchar(20) not null,
    [语文成绩] int not null default(0), --默认值0
    [数学成绩] int not null default(0),
    [英语成绩] int not null default(0),
    [文综成绩] int not null default(0),
    [总成绩] as [语文成绩]+[数学成绩]+[英语成绩]+[文综成绩] PERSISTED
    )
      

  3.   


    drop table sc 
    create table sc (
     考号 int , 
     姓名 varchar(10) , 
     语文成绩 int default 0 , 
     数学成绩 int default 0 , 
     英语成绩 int default 0 , 
     文综成绩 int default 0 ,
     总成绩 int default 0 
     )
     go
     insert into sc(考号,姓名) values(1,'张三')
     go
     create trigger sc_up
     on sc after update
     as 
     begin
     update sc 
     set 总成绩 = isnull(sc.语文成绩,0) + isnull(sc.数学成绩,0) + isnull(sc.英语成绩,0) + isnull(sc.文综成绩,0)
     from inserted 
     where sc.考号 = inserted.考号
     end 
     go
     select * from sc 
     go
     update sc set 语文成绩 =60 , 数学成绩 = 88 where 考号 = 1
     go
     select * from sc 
    (1 行受影响)
    考号          姓名         语文成绩        数学成绩        英语成绩        文综成绩        总成绩
    ----------- ---------- ----------- ----------- ----------- ----------- -----------
    1           张三         0           0           0           0           0(1 行受影响)
    (1 行受影响)(1 行受影响)
    考号          姓名         语文成绩        数学成绩        英语成绩        文综成绩        总成绩
    ----------- ---------- ----------- ----------- ----------- ----------- -----------
    1           张三         60          88          0           0           148(1 行受影响)