B :数据表
在A表内定义的触发器去更新B数据
触发器是Updated
Update B set
B.TotalFee=B.TotalFee-i.FeeTotal,
B.UseAmount=B.UseAmount-i.UseAmount
From Inserted i
Where B.MeterId=i.MeterId and i.InvState='1'当
update A
set InvState='1'
当 A 中的meterid值相等的 记录有多条时 触发器只会执行一次 既只执行第一条 B.MeterId=i.MeterId 后面的不执行
这是为什么?
如果想要所有满足条件的都执行该怎么写?
在A表内定义的触发器去更新B数据
触发器是Updated
Update B set
B.TotalFee=B.TotalFee-i.FeeTotal,
B.UseAmount=B.UseAmount-i.UseAmount
From Inserted i
Where B.MeterId=i.MeterId and i.InvState='1'当
update A
set InvState='1'
当 A 中的meterid值相等的 记录有多条时 触发器只会执行一次 既只执行第一条 B.MeterId=i.MeterId 后面的不执行
这是为什么?
如果想要所有满足条件的都执行该怎么写?
A表
第一条记录 meterid=1
第二条记录 meterid=1
第三条记录 meterid=2
A 执行 update
触发器执行
第1,3 会被触发器操作
第2 则不会被操作
表table1
fd1 fd2
1 qwe
表 table2
fd1 fd2
2 qwe
3 qwe
4 qwe
1,执行
update table1
set table1.fd1=table1.fd1+table2.fd1
from table2
where table1.fd2=table2.fd2
结果:table1.fd1=5
sql 只匹配了最后一条满足条件的记录2,执行
update table1
set table1.fd1=table1.fd1+b.fd1
from (select fd2,sum(fd1) as fd1 from table2 group by fd2) as b
where table1.fd2=b.fd2
结果table1.fd1=10
我想得到第2种结果
第1种写法错在哪
谢谢大家的参与
如果 UPDATE 语句包含了未指定每个所更新列的位置只有一个可用值的 FROM 子句(换句话说,如果 UPDATE 语句是不确定性的),则其结果将不明确。例如,对于下面脚本中的 UPDATE 语句,表 s 中的两行都满足 UPDATE 语句中的 FROM 子句的限定条件,但是将用 s 的哪一行来更新表 t 内的行是不明确的。CREATE TABLE s (ColA INT, ColB DECIMAL(10,3))
GO
CREATE TABLE t (ColA INT PRIMARY KEY, ColB DECIMAL(10,3))
GO
INSERT INTO s VALUES(1, 10.0)
INSERT INTO s VALUES(1, 20.0)
INSERT INTO t VALUES(1, 0.0)
GO
UPDATE t
SET t.ColB = t.ColB + s.ColB
FROM t INNER JOIN s ON (t.ColA = s.ColA)
GO当组合 FROM 和 WHERE CURRENT OF 子句时,可能发生同样的问题。在本例中,表 t2 中的两行都满足 UPDATE 语句中的 FROM 子句的限定条件。将用表 t2 的哪一行来更新表 t1 中的行是不明确的。