У меня есть таблица транзакций в SQLiteSQLite Эффективных Запуска Всего
Дата номера Категория Сумма runningBalance
Я хочу, чтобы колонна работает баланс, чтобы иметь бегущую сумму столбца суммы после таблицы сортируется по дате первый и второй.
Я могу сделать это при выборе при чтении. Но эта таблица может стать очень большой, и я не хочу пересчитывать каждый раз. Я хочу сделать триггер, где все транзакции, следующие за (по дате, затем номеру), вставили/отредактировали транзакцию, обновили значение runBalance.
Это будет означать, что расчеты будут уменьшены ... поскольку более поздние транзакции, скорее всего, будут редактироваться чаще, а более старые - редко. Он также будет распространять вычисления на записи так, чтобы чтение находилось почти мгновенно.
Может ли кто-нибудь помочь в настройке такого триггера?
до сих пор это то, что у меня есть, но оно не дает желаемых результатов. И пересчитывает все каждый раз. Не только те, кто следует за изменением.
CREATE TRIGGER RunningTotal AFTER UPDATE ON Transactions FOR EACH ROW
BEGIN
UPDATE Transactions
SET RunningBalance = (
SELECT (
SELECT sum(Amount)
FROM TopInfo t2
WHERE t2.Date <= t1.Date
)
FROM Transactions t1
);
END;
Спасибо!
Я нашел проблему. Когда две транзакции имеют одну и ту же дату, но другой идентификатор транзакции. Они получают одинаковый баланс – Gavin
Исправлено обновление – Gavin