【发布时间】:2021-07-11 03:58:28
【问题描述】:
我正在尝试在 SQL Server 中创建触发器,并且 SQL 语句看起来像
CREATE TRIGGER dbo.INSERTTORNADOUSER
ON Monarch.dbo.GROUPUSER
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@UserName nvarchar(10),
SELECT @UserName = U.U_NAME FROM USERID U WHERE U.U_ID = inserted.GU_U_ID
我在使用 inserted 关键字时遇到错误。错误信息如下:
无法绑定多部分标识符inserted.GU_U_ID。
我使用的表结构看起来像
Table : USERID
Columns :
U_ID
U_NAME
U_PASSWORD
Table : GROUPUSER
Columns:
GU_ID
GU_U_ID
我读了这个article 以供参考。只是需要一些帮助来了解问题所在。
谢谢。
【问题讨论】:
-
inserted是一个只存在于触发器中的特殊表。您的查询应该是FROM USERID U JOIN INSERTED I ON U.U_ID = I.GU_U_ID并且inserted可能包含超过 1 行。所以你的查询SELECT @UserName = U.U_NAME将无法处理 -
感谢您的信息,对于评论的第二部分,我是否应该考虑循环
Inserted表来处理SELECT @UserName = U.U_NAME的场景 -
请不要循环播放。触发器的目标是什么?
-
目标是每当新记录插入到 GROUPUSER 中时,在另一个表 (USERUPDATELOG) 中添加一个新行。
标签: sql sql-server database triggers