我有一个表,我需要使用插入记录的标识来更新列的值。
以下是我写的触发器:
CREATE TRIGGER [dbo].[UpdateRecordID]
on [dbo].[Employee]
AFTER INSERT
AS
BEGIN
UPDATE dbo.Employee
SET RecordID = (SELECT EmployeeID FROM INSERTED ) WHERE EmployeeID= (SELECT EmployeeID FROM INSERTED )
END
触发器已成功创建,但是当我将记录插入表中时,出现以下错误:
超出最大存储过程、函数、触发器或视图嵌套级别(限制 32)。
如果我不将 where 条件放在更新语句中并将触发器编写如下:
ALTER TRIGGER [dbo].[UpdateRecordID]
on [dbo].[Employee]
AFTER INSERT
AS
BEGIN
UPDATE dbo.Employee
SET RecordID = (SELECT EmployeeID FROM INSERTED )
END
我收到以下错误:
子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。该语句已终止。
更新记录以将主键保留在另一列中以便我可以在同一个表中添加更多记录并使它们保持相关的最佳做法是什么?
我可以在使用@@Identity 插入记录的存储过程中编写更新语句,但我想使用触发器来做同样的事情。