1
누적 합계로 사용될 잔액 필드가있는 SQLite 테이블이 있습니다. 새 레코드를 삽입 할 때 균형을 계산하는 트리거가 정의되어 있지만 첫 번째 레코드에서 균형이 0이되도록 첫 번째 삽입에서 실행되지 않습니다. 다음의 모든 레코드가 올바르게 계산됩니다.첫 번째 레코드 삽입시 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
편집 : 제목을 입력하고 설명을 입력 사이에 변경 내 질문의 본질. 위가 내 원래의 방아쇠입니다. 원래의 질문은 별도의 트리거가 첫 번째 삽입 만 처리 할 수 있는지 여부를 결정하는 것이었지만 지금은 기존 트리거를 수정하여 필요한 기능을 수행 할 수 있는지 궁금합니다.
이것은 나에게 발생했지만 올바른 방법인지는 확실하지 않았습니다. 누군가 다른 사람이 "해라"라고 말하면 나를 위해 충분합니다. –
@MichaelItzoe : 어떻게 문제를 해결했는지 공유하는 마음? 내가 [비슷한] (http://stackoverflow.com/q/16906172/89771) 할려고 해요. –