【发布时间】:2011-05-11 21:15:10
【问题描述】:
我有一个带有余额字段的 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
编辑:我的问题的性质在输入标题和输入描述之间发生了变化。以上是我原来的触发器。我最初的问题是是否可以创建一个单独的触发器来仅处理第一次插入,但现在我想知道是否可以修改现有触发器以执行所需的功能。
【问题讨论】: