0

我需要一些帮助来创建触发器来执行以下操作。

  1. 用户组
  2. 用户

每次我创建一个新的用户记录时,我都会填充一个名为 UserGroupId 的外键字段,它将用户链接到用户组。我想要实现的是在 UserGroup 表上更新一个名为 TotalUsers 的 Count 字段。

请任何帮助都会很棒,因为我是 TSQL 触发器的新手。谢谢

4

1 回答 1

0

我同意 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。

于 2012-06-04T13:22:00.793 回答