update-Update 数据表时自动求如何写SQL语句呢(使用SQL Sever)?(设计触发器或存储过程吧)

问题描述

Update 数据表时自动求如何写SQL语句呢(使用SQL Sever)?(设计触发器或存储过程吧)

我有一个学生考试信息表:

考号,姓名,语文成绩,数学成绩,英语成绩,文综成绩,总成绩 (PS:默认各科成绩,总成绩都为 0)
在老师登分时只会登入各个科目的成绩,我使用的是SQL Sever数据库,当老师登入各科成绩时(使用Update),如何触发自动求和?_谢谢!_

解决方案

 create trigger trig_学生考试信息表 on 学生考试信息表  for insert  as  begin   declare @sum int@考号 nchar(10)   set @考号 = (select 考号 from inserted)   set @sum =  (select sum(语文成绩+数学成绩+英语成绩+文综成绩) from 学生考试信息表  where 考号 = @考号)   update 学生考试信息表 set 总成绩 = @sum where 考号 = @考号  end

解决方案二:
Create Trigger SumScore
On 学生考试信息表 --在表中创建触发器
After Update --Update事件后触发
As --事件触发后所要做的事情
if Update(语文成绩) Or Update(数学成绩) Or Update(英语成绩) Or Update(文综成绩)
Begin
Update 学生考试信息表
Set 总成绩 = I.语文成绩 + I.数学成绩 + I.英语成绩 + I.文综成绩
From 学生考试信息表 T1 Deleted D Inserted I
Where T1.考号 = D.考号
End

解决方案三:
上面的答案有帮助吗?如果还有问题,请提出来,如果对答案满意,请顶一下,并标记为采纳答案,谢谢!

时间: 2024-09-28 19:27:47

update-Update 数据表时自动求如何写SQL语句呢(使用SQL Sever)?(设计触发器或存储过程吧)的相关文章

mysql-使用navicat premium打开oracle数据表时提示“内部缓冲区字符太长”

问题描述 使用navicat premium打开oracle数据表时提示"内部缓冲区字符太长" 使用navicat premium打开oracle数据表时提示"内部缓冲区字符太长",但在plsql里面是正常的: 使用navicat premium"数据传输"功能将oracle数据表导入到mysql时,oracle中number类型在mysql中默认为保留小数点后30位..怎样才能设置成不保留小数点呢不知道是怎么回事,求大神指教~~ 解决方案 直接

datagridview-VS2010从datagirdview控件设置数据来源时自动建立的dataset有什么用?

问题描述 VS2010从datagirdview控件设置数据来源时自动建立的dataset有什么用? 相应的建立了这些: 数据库名+dataset(这是个类,如testDataSet) 表名+bindingsource 表名+tableadapter 包含了哪些功能?

vs2010-用VS2010打开sdf数据库文件中的数据表时提示找不到指定模块

问题描述 用VS2010打开sdf数据库文件中的数据表时提示找不到指定模块 解决方案 VS没有安装正确,重新安装下看看

sqlserver2005自动创建数据表和自动添加某个字段索引_mssql2005

创建数据表的SQL语句如下: string tatlename = "T_useruid";//定义一个变量.用于自动创建数据表的名称,当前表名为:T_useruid string sql = "CREATE TABLE [dbo].[" + tatlename + "]([Cid] [int] IDENTITY(1,1) NOT NULL,[Uid] [nchar](32) COLLATE Chinese_PRC_CI_AS NULL,CONSTRAIN

Visual C# 2005中为数据表建立自动编号字段

在实际操作中,流水号的需求是非常大的.比方说,我们经常希望订单号码或是订单上各个产品的顺序编号自动依次递增而不需要人工输入,当您遇到此类需求时,千万不要一时冲动而想以程序代码来解决,因为只要使用自动编号字段,万事大吉! ADO.NET并没有额外提供所谓的自动编号数据类型.欲使一个字段成为自动编号字段,您必须进行下列设置: ◆首先,字段的数据类型必须是Int16.Int32或Int64.如果字段的数据类型不是这三者,则会将DataType属性强制设置为Int32. ◆欲使一个字段成为自动编号字段,

请教多线程操作同一个数据表时,怎么避免表死锁

问题描述 最近有一个数据采集的项目,要求可以多路并发,遇到多线程操作同一个数据表的问题,经常发生表死锁,求各位大侠帮忙,大约有20-40个进程实例化读取类,类中Receive方法接收数据并存储上代码publicclassclsTranslateObj{privatevoidReceive(){intlenReceive=0;byte[]receivedByte=newbyte[BUFFER_SIZE];//接收返回字节数组_rtnStr=string.Empty;while(_flgConnec

access中数据表的自动重新联接

用access做应用程序,往往做成"数据"和"程序"两个数据库,"数据"数据库中只存放数据表,"程序"数据库中存放所有的form,query,report,module等,通过表联接"程序"数据库可以访问所有"数据"数据库中的表. 当我们的应用程序更换存储位置的时候往往失去正确的表联接,造成运行错误.下面的一段程序可以自动找回表联接.在我的应用中"程序"数据库名字是s

Access中数据表的自动重新联接实例分析

用Access做应用程序,往往做成"数据"和"程序"两个数据库,"数据"数据库中只存放数据表,"程序"数据库中存放所有的form,query,report,module等,通过表联接"程序"数据库可以访问所有"数据"数据库中的表. 当我们的应用程序更换存储位置的时候往往失去正确的表联接,造成运行错误.下面的一段程序可以自动找回表联接.在我的应用中"程序"数据库名字是s

跪求一sql语句:查询sql数据表的字段的备注内容

问题描述 是这样的,想做一个对应表字段的查询联合查询,因为数据表的字段名是英文的,但备注是汉字的,所以想根据备注查出对应表的字段名,然后在按这个字段进行查询.首先:第一步查出表说所有字段的备注2:然后根据备注内容查询出字段名:我是菜鸟,请大家帮下忙!! 解决方案 解决方案二:selectcommentsfromuser_col_commentswheretable_name='TEST'andcolumn_name='NAME';解决方案三:declare@atable(字段名nvarchar(