为了账号安全,请及时绑定邮箱和手机立即绑定

sql server 2008触发器怎么实现oracle里边for each row的行级触发器的效果,用循环应该怎么做,求关键代码

sql server 2008触发器怎么实现oracle里边for each row的行级触发器的效果,用循环应该怎么做,求关键代码

汪汪一只猫 2018-12-06 17:39:24
有户型HUXING表,关键字段有ID,均价PRICE,面积square,总价totalprice 要求每更新一次就重新计算一次总价=面积*均价,我写的只更新一条时没错,但更新多条时只执行最后一条,如题,怎么实现行级触发器效果,即更新多条时触发器也执行多次
查看完整描述

1 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

没听说过SQL SERVER的Trigger是只更新最后一条的,不知道你是否误安装了SQL SERVER 1990 BETA版。

要不然麻烦自己搞一下简单的测试。

为了证明这点,我居然闲的发慌真了弄了个数据表进行了简单的测试。

我居然连这种最起码的信任都没有给到微软,请原谅我吧,BILL。

数据表名test_table31, 数据表内有三行数据,第一列是GUID,PrimaryKey,你别管他叫啥字段名了。

7650d1ed-9779-472e-8b9d-005ac317ac81 name1 1
a20a0d30-fdb0-4ab4-8b5a-5ca785b43de2 name2 2
8770a802-e044-433e-b3e6-a478ae29df09 name3 3

Trigger是这样的

Update test_Table1 set Value=Inserted.Value+1 from Inserted where test_table1.TestID=Inserted.TestID

这是我的查询语句

Update test_table1 set name=name + '_update'

下面是执行结果

(3 行受影响)

(3 行受影响)    -----这是Trigger在执行的结果。

 

这是结果的数据行

7650d1ed-9779-472e-8b9d-005ac317ac81 name1_update 2
a20a0d30-fdb0-4ab4-8b5a-5ca785b43de2 name2_update 3
8770a802-e044-433e-b3e6-a478ae29df09 name3_update 4

注:最后一列的值原来是1、2、3

查看完整回答
反对 回复 2019-01-07
  • 1 回答
  • 0 关注
  • 603 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信