Помогите создать триггер в 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.

→ Ссылка