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 に答える