当我从User中删除,编辑或添加元素时,我需要创建一个触发器来更新组的总计。
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 |
+-----+----------+-------+
和表用户
+-----+-------+-----+-----+
| num | name | sex | Grp |
+-----+-------+-----+-----+
| 1 | kevin | m | a |
+-----+-------+-----+-----+
| 2 | kim | f | a |
+-----+-------+-----+-----+
因此,如果我添加一个新用户,则组的总值必须增加;
如果我将其删除,则减小;但是
如果我更改用户组,则如何使用触发器{{1 }}他的to decrease
的总数和old group
他的新组的总数
我尝试了什么:
increase
答案 0 :(得分:0)
我将按照您的要求回答您的具体问题,因为这似乎是您的一项学术练习。
如果更改用户组,如何使用触发器来减少 他的旧组的总数并增加新组的总数
更改用户组时,您正在对表进行UPDATE。触发器中的单行UPDATE在inserted
表和deleted
表中都导致一行。
因此,通过检查“如果不存在”,可以防止如果还有INSERT,则不计算DELETES,反之亦然。
如果您摆脱了IF NOT EXISTS检查,而对每个插入简单地递增,对每个删除简单地递减,那么您将以所需的方式处理UPDATES。