创建时的TSQL触发器

时间:2012-05-28 19:30:03

标签: sql-server tsql triggers count

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

表格

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

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

1 个答案:

答案 0 :(得分: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。