Аналитическая функция в триггере mysql

188
05 июня 2019, 20:30

Подскажи, как решить проблему или найти альтернативное решение - на базе одной таблички:

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.'
READ ALSO
Запрос mysql с выборкой по дате

Запрос mysql с выборкой по дате

Есть таблица courier вида:

198
Создать хранимую процедуру

Создать хранимую процедуру

Нужно создать хранимую процедуру для генерации скриптов insert-запросов содержимого таблицы, переданной в параметреРезультат:

181
Адаптация iframe после клика в гугл форме

Адаптация iframe после клика в гугл форме

У меня есть гугл форма, которая находиться в iframeТак вот, форма имеет большую высоту

180
Получить родителя третьего порядка

Получить родителя третьего порядка

Есть HTML кусочек следующего вида:

191