Помогите создать триггер в SQLITE
Есть две таблицы:
1-ая:
id name count summ
1 obj1 X1 Y1
2 obj2 X2 Y2
3 obj3 X3 Y3
и 2-ая:
id objects summ
1 obj1 50
2 obj1 75
3 obj2 66
4 obj1 40
И собственно вопрос:
Можно ли с помощью триггера в БД сделать обновление Х1, Х2, Х3 (количество записей obj1, obj2 etc во второй таблице) и Y1, Y2, Y3 (сумма значений summ соответствующих обьектов).
То есть, выбрать из второй таблицы количество записей obj1 и записать в первую таблицу для obj1, ну и аналогично с суммой для каждого обьекта. Событие для триггера - добавление или удаление записей из второй таблицы...
Ответы (1 шт):
Автор решения: Akina
→ Ссылка
Корректирующий триггер:
CREATE TRIGGER tr_ai_t2
AFTER INSERT
ON table2
FOR EACH ROW
UPDATE table1
SET table1.count = table1.count + 1,
table1.summ = table1.summ + NEW.summ
WHERE table1.name = NEW.object;
и аналогичный триггер на DELETE.
Активный триггер:
CREATE TRIGGER tr_ai_t2
AFTER INSERT, DELETE
ON table2
UPDATE table1
SET table1.count = new_data.count,
table1.summ = new_data.summ
FROM ( SELECT table2.object, COUNT(table2.object) count, SUM(table2.summ) summ
FROM table2
GROUP BY table2.object ) new_data
WHERE table1.name = new_data.object;
PS. Оба триггера предполагают, что все поля в table2 определены как NOT NULL.