触发器为什么只能更新其中一条记录

jacketzhou jacketzhou 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
CREATE TRIGGER panlu ON dbo.TB_AnsiMatch
FOR INSERT,UPDATE
AS
declare @id int,@a varchar(10) ,@b varchar(50),@type varchar(50)
select @id=id,@a=a,@b=b,@type=type from inserted
if update(a) or update(b)
begin
if @h_jq+@a_jq<>''
begin
if @type='1'
begin
update table set c=@a+@b where id=@id
end
else
begin
update table set c=@a-@b where id=@id
end
end
end

table触发器
字段a跟b是同时更新,记录有很多是相同的,只是type类型不一样,当type=1时就相加,type=0就相减
问题是当有两条相同记录的时候,只会更新一条记录,不知道什么?
例如:
id a b c type
-----------------------
1 8 6 1
2 8 6 1
...


当同时更新上面两条记录的时候得出的结果是
id a b c type
-----------------------
1 8 6 14 1
2 8 6 1
...全文

相关推荐

建立触发器-数据库vfvfds

建立触发器--数据库讲解,很好的。我们老师自己做的

GTPPWE

存储过程、触发器和用户自定义函数实验2、触发器

(1)为study表创建一个UPDATE触发器,当更新成绩时,要求更新后的成绩不能低于原来的成绩。 CREATE TRIGGER UPDATE_SCORE ON study instead of update as declare @sno2 char(5),@cno2 char(4),@score1 smallint,@score2 smallint select @sno2

liu_shb

触发器练习答案(附有测试文档)

1、当向SC表插入数据时,修改(或添加)SC_NUMBER(包括学生学号和选课门数两列)表格中的数据。 2、当删除SC表中数据时,修改(或添加)SC_NUMBER中的数据。 3、当修改SC表中数据时,若修改的是学号,则对应修改SC_NUMBER表中的选课门数,否则打印“某某(学生姓名)的学生选课信息已经修改”信息。 1、修改STUDENT表数据时,限制不能修改学生的系别(不能修改CS系学生的系别)。 2、插入课程时,课程号以‘S’开头的课程的学分不能低于3分。 3、不能删除90分以上学生的选课信息。 插入Student表中数据时,CS系学生的年龄不能大于30岁。 当修改Student表中的年龄字段时,使其只能增加,不能减少。 删除Student表中的学生信息时,判断在SC表中该学生的平均成绩是否高于60,若高于60,则不能删除,否则允许删除,同时删除SC表该学生对应的选课信息。 在Student表中添加列:sum_Grade(总成绩),avg_grade(平均成绩)。 在SC表中作一触发器,当添加,删除或修改一行之后,将该学生在Student表中的总成绩和平均成绩相应改变。 插入或修改(修改课程号时)选课信息时,若该课程的选课人数已满,则不允许操作,并抛出相应的错误提示。

e小王同学V

Sql Server触发器的使用

Sql Server为每个触发器都创建了两个专用表:Inserted表和Deleted表。这两个表由系统来维护,它们存在于内存中而不是数据库中。这两个表的结构总是与被该触发器作用的表的结构相同,触发器执行完成后,与该触发器相关的这两个表也被删除。  对表的操作 Inserted逻辑表 Deleted逻辑表 增加记录(insert) 存放增加的记录 无 删除记录(delete) 无 存放被删除的记录 修改记录(update) 存放更新后的记录 存放更新前的记录 三、for、after、instead of触发器 after:触发器在触发它们的语句完成后执行

weixin_38723516

SQL-Server2008触发器练习题

SQL-Server2008触发器练习题

邢20132013
评论 12
收藏 已收藏
分享
返回顶部
jacketzhou
MS-SQL Server 34,876 成员 254,635 内容