Я рекомендую не делать этого, а вместо этого предлагаю просто использовать SUM
в качестве аналитической функции:
SELECT
id,
amount,
SUM(amount) OVER (ORDER BY id) total
FROM yourTable;
Логика, лежащая в основе этого ответа, заключается в том, что ваша скользящая сумма total
получена, а неоригинал, данные.Следовательно, лучше просто вычислять его на лету, когда вам это нужно, а не хранить его.
Если вы действительно хотите вставить правильную сумму во время одной вставки, вы можете попробовать:
INSERT INTO public.tb_total_amount (amount, total, create_time)
SELECT
100,
(SELECT COALESCE(amount, 0) FROM public.tb_total_amount
ORDER BY id DESC LIMIT 1) + 100,
NOW();