1
我有一个SQLite表,其中一个Balance字段将用作运行总数。我定义了一个触发器,用于在插入新记录时计算余额,但不会在第一次插入时触发,因此第一条记录中的余额为零。以下所有记录计算正确。可能让SQLite触发只插入第一条记录吗?
当前触发定义:
CREATE TRIGGER [UpdateBalance_Insert] AFTER INSERT ON [Transaction] FOR EACH ROW BEGIN
REPLACE INTO [Transaction]
SELECT t1.[ID],
t1.[Date],
t1.[Transaction],
t1.[Debit],
t1.[Credit],
( SELECT SUM(t2.[Credit]) - SUM(t2.[Debit]) + new.[Credit] - new.[Debit]
FROM [Transaction] AS t2
WHERE t2.[Date] < t1.[Date] OR (
t2.[Date] = t1.[Date] AND t2.[ID] < t1.[ID])
) AS [Balance]
FROM [Transaction] AS t1
WHERE [ID] = new.[ID];
UPDATE [Transaction]
SET [Balance] = [Balance] + new.[Credit] - new.[Debit]
WHERE [Date] > new.[Date];
END
编辑:我的问题输入标题,然后键入描述之间改变的性质。以上是我的原始触发器。我原来的问题是是否可以创建一个单独的触发器来处理第一个插入,但现在我想知道是否可以修改现有的触发器来执行所需的功能。
这发生在我身上,但我不确定这是否是正确的选择。简单地让别人说“做吧”对我来说已经够好了。 – 2011-05-12 13:54:48
@MichaelItzoe:分享你是如何解决问题的?我正在尝试[类似的东西](http://stackoverflow.com/q/16906172/89771)。 – 2013-06-03 21:41:53