【发布时间】:2008-08-20 15:26:06
【问题描述】:
我在 SQL Server 2005 数据库中有一个表,该表带有一个触发器,每当插入新记录时,该触发器应该将记录添加到不同的表中。它似乎工作正常,但如果我在使用子查询作为值源的主表上执行 Insert Into,则触发器只会在另一个表中插入一条记录,即使将多条记录添加到主表中也是如此。我希望触发器为添加到主表的每条新记录触发。 2005 年有可能吗?
我正在做的插入是:
INSERT INTO [tblMenuItems] ([ID], [MenuID], [SortOrder], [ItemReference], [MenuReference], [ConcurrencyID]) SELECT [ID], [MenuID], [SortOrder], [ItemReference], [MenuReference], [ConcurrencyID] FROM [IVEEtblMenuItems]
触发器如下所示:
CREATE TRIGGER [dbo].[tblMenuItemInsertSecurity] ON [dbo].[tblMenuItems]
FOR INSERT
AS
Declare @iRoleID int
Declare @iMenuItemID int
Select @iMenuItemID = [ID] from Inserted
DECLARE tblUserRoles CURSOR FASTFORWARD FOR SELECT [ID] from tblUserRoles
OPEN tblUserRoles
FETCH NEXT FROM tblUserRoles INTO @iRoleID
WHILE (@@FetchStatus = 0)
BEGIN
INSERT INTO tblRestrictedMenuItems(
[RoleID],
[MenuItemID],
[RestrictLevel])
VALUES(
@iRoleID,
@iMenuItemID,
1)
FETCH NEXT FROM tblUserRoles INTO @iRoleID
END
CLOSE tblUserRoles
Deallocate tblUserRoles
【问题讨论】:
标签: sql-server