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