SQL更新触发器问题

时间:2017-07-21 15:02:15

标签: sql-server tsql triggers sql-update

我有以下更新触发器(下面的代码)这是有效的,但不是我的预期。 当我在Valve表中添加值VCODE即V或AV的信息时,我得到以下错误(如下图所示)SQL Error我知道如果我右键单击并执行SQL,则会填充值,但是我不想这样做。 我已经做了一些挖掘,我认为它与pkID有关,但我不确定我需要用代码来解决这个问题。有人请告诉我应该如何重写下面的脚本以避免这个错误。

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[trValve] ON [dbo].[Valve]
AFTER UPDATE
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE Valve
    SET VSYS = 'VLV',
    SITE_CODE = '00123',
    VAREA = 'INL'
    FROM Valve t
    INNER JOIN inserted i ON t.pkID = i.pkID
    WHERE i.VCODE = 'V'
    OR i.VCODE = 'AV'

BEGIN
    SET NOCOUNT ON;

    UPDATE VALVE
    SET ASSET_TAG = CONCAT (
            Valve.SITE_CODE,'-',Valve.VAREA,'-',valve.VSYS,'-',Cast(pkID AS VARCHAR(50))
            );
END
END

0 个答案:

没有答案