Подскажи, как решить проблему или найти альтернативное решение - на базе одной таблички:
CREATE TABLE IF NOT EXISTS s.table1(
row_id INT(255) NOT NULL AUTO_INCREMENT PRIMARY KEY,
p_id INT(255) NOT NULL,
Value DECIMAL(20,2) DEFAULT 0);
cоздаю триггер:
DELIMITER $$
CREATE TRIGGER s.t AFTER INSERT
ON s.table1
FOR EACH ROW
BEGIN
INSERT INTO s.table2
SET r_id = new.p_id,
Summ = SUM(new.Value) over (Partition by new.p_id);
END$$
DELIMITER
;
который будет инсертить данные в табличку:
CREATE TABLE IF NOT EXISTS s.table2(
row_id INT(255) NOT NULL AUTO_INCREMENT PRIMARY KEY,
r_id INT(255) NOT NULL,
Summ DECIMAL(20,2) DEFAULT 0);
Суть триггера - в s.table2 будут храниться суммарные данные по каждому s.table1.p_id, чтобы потом извлекать эту информацию во вью, включающую в себя данные из разных таблиц. Триггер облегчит вызов вью - будет по джойну тянуться значение из s.table2.summ, а не вызываться каждый раз аналитическая функция.
Пример s.table1 с данными:
ROW_ID VALUE P_ID
1 1 1
2 2 2
3 3 1
4 4 3
5 5 1
6 6 3
Что хочу увидеть в s.table2:
ROW_ID R_ID SUMM
1 1 9
2 2 10
3 3 2
Триггер создается, но при инсерте данных в s.table1 получаю ошибку при его выполнении:
Error Code: 3593. You cannot use the window function 'sum' in this context.'
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости