使用触发器计算SQLite表中的运行总数
如何创建SQLite触发器来计算“实际”表上的运行总计?下面的SQL代码应该更新AccountBalances表,以便余额列从1、2、3、。。。行数。但是,触发器仅更新第二行,即使我启用了递归_触发器。下面的结果是第1行=1,第2行=2,之后的行为空使用触发器计算SQLite表中的运行总数,sql,sqlite,Sql,Sqlite,如何创建SQLite触发器来计算“实际”表上的运行总计?下面的SQL代码应该更新AccountBalances表,以便余额列从1、2、3、。。。行数。但是,触发器仅更新第二行,即使我启用了递归_触发器。下面的结果是第1行=1,第2行=2,之后的行为空 CREATE TEMP TABLE "AccountBalances" ( "Id" INTEGER PRIMARY KEY, "DateId" INT, "AccountId" INT, "AccountCurrAmount"
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
SQLITE\u MAX\u TRIGGER\u DEPTH
的值。是否可以将其设置为1而不是默认的1000Id Balance
1 1
2 2
3 3
4 4
5 5
6 6
关于我的SQLite版本,你是对的。它不起作用,因为我在Firefox上使用了SQLite Manager 0.5.15插件。当我使用官方的sqlite3.exe时,它起作用了。当我将它用于一个包含1000多行的表时,似乎得到了“错误:触发器递归级别太多”。我将不得不以另一种方式实现运行总计。
Id Balance
1 1
2 2
3 3
4 4
5 5
6 6