0

我尝试在 SQL Server 中创建一个触发器,以自动将值从插入的行复制到另一列。

我有将记录插入表 KNT 的应用程序。插入后,我需要将值从列 GID 复制到列 ID

我现在有

GID | ID 
1   | null
2   | null
3   | null

我想要的是

GID | ID 
1   | 1
2   | 2
3   | 3

我尝试了什么:

    CREATE TRIGGER GIDONID
       ON  dbo.KNT
       AFTER INSERT
    AS 

    BEGIN
    SET NOCOUNT ON;
    DECLARE @GIDTOCOPY as INT
    SET @GIDTOCOPY=(select top 1 GID from inserted)
        UPDATE dbo.KNT SET ID=@GIDTOCOPY WHERE GID=@GIDTOCOPY 

END
4

1 回答 1

1

这是可以工作的触发代码。加入inserted表并执行基于集合的更新,而不是尝试逐行更新(这在触发器中永远不会好,因为它会在您插入超过 1 行时失败):

UPDATE k
SET k.ID = i.GID
FROM inserted i
JOIN KNT k on i.GID = k.GID

但是,如果您需要这样做,我真的非常建议您将值插入应用程序的两列中。很怀疑为什么您需要在另一个字段中复制相同的数据开始,但是让应用程序执行它实际上不会增加​​任何工作,而触发器会增加一个完整的额外过程。

于 2019-07-17T20:36:46.140 回答