添加到列表的新权限。通过触发器更新所有用户以获得新权限
New permission added to list. Update all users to have new permission via Trigger
所以我有一个 table,其中包含我们内部网站的所有报告。我正在尝试创建一个触发器,以便在将新报告添加到此列表时所有用户都获得更新权限。 (默认访问 False)
我不完全理解触发器,一直在使用几个 sql 语句结合 C# 执行此任务。虽然我确定有一种方法可以只用 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
它的目标是为每个具有列表 table id 和 false 值的用户在权限 table 中添加一行。
我想你只是想要一个 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
所以我有一个 table,其中包含我们内部网站的所有报告。我正在尝试创建一个触发器,以便在将新报告添加到此列表时所有用户都获得更新权限。 (默认访问 False)
我不完全理解触发器,一直在使用几个 sql 语句结合 C# 执行此任务。虽然我确定有一种方法可以只用 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
它的目标是为每个具有列表 table id 和 false 值的用户在权限 table 中添加一行。
我想你只是想要一个 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