【发布时间】:2014-08-18 11:50:34
【问题描述】:
我想这样计算总和(idd 不是主键或外键)
idd svalue acctotal
1 5 5
2 6 11
1 2 13
3 4 17
2 1 18
等等
我在许多触发器中工作,但没有成功:
create trigger acc on detail
for update, insert
as
DECLARE @AccountID INT
DECLARE @getAccountID CURSOR
SET @getAccountID = CURSOR FOR
SELECT idd
FROM detail
declare @tot as int
set @tot = (select sum(dvalues) from detail)
OPEN @getAccountID
FETCH NEXT FROM @getAccountID INTO @AccountID
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @AccountID
UPDATE detail
SET acctotal = @tot
FETCH NEXT FROM @getAccountID INTO @AccountID
END
CLOSE @getAccountID
【问题讨论】:
-
真的需要存储累计值吗?为什么不只计算输出呢?如果你确实存储它,你还需要一个
delete触发器。 -
是的,我真的想要这个……输出很简单,@gorden linoff 先生
-
没有某种顺序是没有意义的。您需要一个列来告诉您这些记录需要按什么顺序添加。听从 Linoff 先生的建议 - 这可能是个坏主意。
-
不可能...编程@electricliama 没有坏主意
-
我不确定我是否理解,但如果没有在表格中定义顺序的列,您将获得“不可预测的结果”
标签: sql sql-server sql-server-2008 triggers