我有一个带有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
编辑:在输入标题和输入说明之间,我的问题的性质发生了变化。以上是我原来的触发器。我最初的问题是,是否可以创建单独的触发器来处理第一个插入,但现在我想知道是否可以修改现有触发器以执行所需的功能。
答案 0 :(得分:0)
我首先尝试检查表是否为空,如果是,则硬编码余额。如果没有,我会用你的算法计算它。