新权限已添加到列表。通过触发器更新所有用户以拥有新权限

时间:2019-03-26 15:15:07

标签: sql-server tsql database-trigger

因此,我有一个表格,其中包含我们内部站点的所有报告。我正在尝试触发一个触发器,以便在将新报告添加到此列表时,所有用户都将获得该权限的更新。 (默认访问权限为False)

我不完全了解触发器,并且已经通过结合C#的几个sql语句执行了此任务。虽然我敢肯定有一种方法可以仅使用SQL触发器。

这是我到目前为止得到的最接近的信息(不起作用)。安全性的名称已更改。

CREATE TRIGGER [New Trigger]
    ON [dbo].[List_Table]
    FOR INSERT
    AS
    BEGIN
        INSERT INTO [dbo].[Permission_Table]
        (UserId, ReportId, Granted)
        (SELECT UserId FROM [dbo].[User_Table]),(SELECT ReportId FROM inserted),false
    END

目标是在权限表中为每个用户添加一个具有列表表ID和值false的行。

1 个答案:

答案 0 :(得分:0)

我认为您只想要一个insert . . . select

CREATE TRIGGER [New Trigger]
    ON [dbo].[List_Table]
    FOR INSERT
    AS
    BEGIN
        INSERT INTO [dbo].[Permission_Table](UserId, ReportId, Granted)
           SELECT u.UserId, i.ReportId, 'false'
           FROM Inserted i CROSS JOIN
                [dbo].[User_Table] u;
    END