Мне нужно создать триггер для обновления всего группы, когда я удаляю, редактирую или добавляю элемент из пользователя.
create table Group(Grp varchar(3) primary key, Name varchar(20), total int);
create table User(Num varchar(3) primary key, Name varchar(30), Sex char(1), Grp varchar(3) references group);
, например:
Table group
+-----+----------+-------+
| Grp | name | total |
+-----+----------+-------+
| a | admin | 2 |
+-----+----------+-------+
| b | customer | 0 |
+-----+----------+-------+
и таблица User
+-----+-------+-----+-----+
| num | name | sex | Grp |
+-----+-------+-----+-----+
| 1 | kevin | m | a |
+-----+-------+-----+-----+
| 2 | kim | f | a |
+-----+-------+-----+-----+
, поэтому, если я добавляю нового пользователя, общее значение группы должно увеличиваться,
, если я удаляю его, уменьшается, но
, если я меняю группупользователя, как использовать триггер to decrease
итог его old group
и increase
итог его новой группы
что я пробовал:
CREATE TRIGGER edit_total ON dbo.User
FOR INSERT , UPDATE , DELETE
AS
BEGIN
IF NOT EXISTS(SELECT * FROM INSERTED)
-- DELETE
UPDATE dbo.group SET total = total - 1 FROM inserted WHERE group.grp = inserted.grpe;
ELSE
BEGIN
IF NOT EXISTS(SELECT * FROM DELETED)
-- INSERT
UPDATE dbo.group SET total = total + 1 FROM inserted WHERE group.grp = inserted.grp;
ELSE
-- UPDATE
END
END;