【发布时间】:2026-01-27 07:10:01
【问题描述】:
如何创建 SQLite 触发器来计算“实际”表上的运行总计?下面的 SQL 代码应该更新 AccountBalances 表,以便 Balance 列从 1、2、3、... rowcount 开始计数。但是,即使我打开了 recursive_triggers,触发器也只会更新第二行。下面的结果是第 1 行 = 1,第 2 行 = 2,之后的行为空。
CREATE TEMP TABLE "AccountBalances" (
"Id" INTEGER PRIMARY KEY,
"DateId" INT,
"AccountId" INT,
"AccountCurrAmount" REAL,
"Balance" REAL);
INSERT INTO "AccountBalances"
(DateId, AccountId, AccountCurrAmount)
SELECT DateId, AccountId, Sum(AccountCurrAmount)
FROM Actual
GROUP BY DateId, AccountId
ORDER BY AccountId, DateId;
CREATE TRIGGER UpdateAccountBalance AFTER UPDATE ON AccountBalances
BEGIN
UPDATE AccountBalances
SET Balance = 1 + new.Balance
WHERE Id = new.Id + 1;
END;
PRAGMA recursive_triggers = 'on';
UPDATE AccountBalances
SET Balance = 1
WHERE Id = 1
【问题讨论】: