解决方案 »
- MSSQL是否可以将游标置于最末行,从后向前查询?
- columns_updated()函数怎么使用
- 难以解决的SQL中数据区间的查询问题!
- 非常着急,请多帮忙呀
- 高手请进,超奇怪的问题??
- 指定的锁条件不管用了``
- 请问在做触发器时,如何将表中的行复制?
- 救救我吧!
- mcsd 70-029 试题疑问之十八???
- 在存储过程中写了下面的语句,说@cc附近有错误“select count(lsh) into @cc from cpxs_bzwk_rck_mx where lsh_main=@lsh and rcklb='010
- 请问SQL Server 2008 Express Edition(免费版)有用户和并发访问限制吗?
- MSSQL 如何用脚本查询服务器所有数据库在硬盘上存储的地址
如果是计算总分的话,可以考虑在设计表的时候使用计算列实现。
[总成绩] as [语文成绩]+[数学成绩]+[英语成绩]+[文综成绩] PERSISTED
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
)
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 行受影响)