我需要一些帮助来创建触发器来执行以下操作。
表
- 用户组
- 用户
每次我创建一个新的用户记录时,我都会填充一个名为 UserGroupId 的外键字段,它将用户链接到用户组。我想要实现的是在 UserGroup 表上更新一个名为 TotalUsers 的 Count 字段。
请任何帮助都会很棒,因为我是 TSQL 触发器的新手。谢谢
我需要一些帮助来创建触发器来执行以下操作。
表
每次我创建一个新的用户记录时,我都会填充一个名为 UserGroupId 的外键字段,它将用户链接到用户组。我想要实现的是在 UserGroup 表上更新一个名为 TotalUsers 的 Count 字段。
请任何帮助都会很棒,因为我是 TSQL 触发器的新手。谢谢
我同意 marc_s 的观点,这种信息可能更好地仅在必要时获取,而不是将其存储在表中的单独字段中。但这是一个应该做你想做的事的触发器:
create trigger UpdateUserCount on [User]
for insert, update, delete
as
begin
update UserGroup set TotalUsers = sub.UserCount
from (
select UserGroupId, COUNT(*) as UserCount
from [User]
where UserGroupId in (
select UserGroupId from inserted
union
select UserGroupId from deleted
)
group by UserGroupId
) as sub
where UserGroup.UserGroupId = sub.UserGroupId
end
当您删除用户或更新用户组时,此触发器也会更新计数。我假设 UserGroup 表中的主键列称为 UserGroupId。