插入重复的 UserId 后触发
TRIGGER AFTER INSERT duplicate UserId
我在 ASP.NET table "UsersInRoles" 上添加了一个名为“UIR_UserID [nvarchar(50)]
”的附加字段。我想在插入时触发的是将 UserId 复制到 UIR_UserId
字段。
CREATE TRIGGER [dbo].[TRIG_INS_DUPL_USER_ID]
ON [dbo].[UsersInRoles] AFTER INSERT AS
BEGIN
INSERT INTO UsersInRoles(UIR_UserID)
SELECT UserId
FROM INSERTED
END
你得到的东西不好,你会得到无限递归。我认为您正在寻找 UPDATE
新插入的行,而不是插入其他行:
update u
set UIR_UserID = i.UserId
from dbo.UsersInRoles u
join inserted i on u.UserId = i.UserId
或者,您真正想要做的是从调用应用程序中抽象出 UIR_UserID
字段。您可以改用存储过程或可插入视图来执行此内联操作。尽管您在同一行的两列中有重复数据这一事实仍然值得怀疑。
我在 ASP.NET table "UsersInRoles" 上添加了一个名为“UIR_UserID [nvarchar(50)]
”的附加字段。我想在插入时触发的是将 UserId 复制到 UIR_UserId
字段。
CREATE TRIGGER [dbo].[TRIG_INS_DUPL_USER_ID]
ON [dbo].[UsersInRoles] AFTER INSERT AS
BEGIN
INSERT INTO UsersInRoles(UIR_UserID)
SELECT UserId
FROM INSERTED
END
你得到的东西不好,你会得到无限递归。我认为您正在寻找 UPDATE
新插入的行,而不是插入其他行:
update u
set UIR_UserID = i.UserId
from dbo.UsersInRoles u
join inserted i on u.UserId = i.UserId
或者,您真正想要做的是从调用应用程序中抽象出 UIR_UserID
字段。您可以改用存储过程或可插入视图来执行此内联操作。尽管您在同一行的两列中有重复数据这一事实仍然值得怀疑。