可能只在第一条记录的插入时触发SQLite触发器?

时间:2011-05-11 21:15:10

标签: sqlite triggers

我有一个带有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

编辑:在输入标题和输入说明之间,我的问题的性质发生了变化。以上是我原来的触发器。我最初的问题是,是否可以创建单独的触发器来处理第一个插入,但现在我想知道是否可以修改现有触发器以执行所需的功能。

1 个答案:

答案 0 :(得分:0)

我首先尝试检查表是否为空,如果是,则硬编码余额。如果没有,我会用你的算法计算它。