写触发器时提示“如果 DML 语句包含不带 INTO 子句的 OUTPUT 子句,则该语句的目标表不能具有任何启用的触发器”

在项目中遇到一个情况,系统标准功能是,当创建A表单据并保存时,会自动更新B表中的StockStatus值,但是这个值在A表上显示不出来,现在希望将B表中的StockStatus值实时显示在A表上,就在A表上加了一个字段pubuserdefnvc2,然后在B表上做了一个触发器,当B表StockStatus更新时,自动更新A表的pubuserdefnvc2。但是在单据保存的时候就报错了,提示如果 DML 语句包含不带 INTO 子句的 OUTPUT 子句,则该语句的目标表不能具有任何启用的触发器。
SQL SERVER触发器如下:

ALTER TRIGGER [dbo].[ST_SerialNumber_UPDATE] ON [dbo].[ST_SerialNumber]
FOR UPDATE,INSERT
AS
DECLARE @ID varchar(50)
DECLARE @ZT varchar(50)

SELECT @ID=a.id,
@ZT=c.Name
FROM INSERTED a
LEFT JOIN ST_RDRecord_b b on b.SerialNumbers=a.SNCode
LEFT JOIN eap_EnumItem c on c.code=cast(a.StockStatus as nvarchar(50))

Begin
Update ST_RDRecord_b Set pubuserdefnvc2=@ZT Where id=@ID
END

报错如下:

img

网上查了一些,得到的结果是应该创建临时表用于更新,但是具体怎么写实在没有搞清楚
所以想请教下应该怎么改,还请赐教!

请采纳


ALTER TRIGGER [dbo].[ST_SerialNumber_UPDATE] ON [dbo].[ST_SerialNumber]
FOR UPDATE,INSERT
AS
Begin
Update t1 set pubuserdefnvc2=t3.name
from ST_RDRecord_b t1
inner join INSERTED t2 on t1.id=t2.id
LEFT JOIN eap_EnumItem t3 on t3.code=cast(t2.StockStatus as nvarchar(50))
END