将 A 列的复制值插入 B 列后创建触发器

Create Trigger after insert copy vaule from column A to column B

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

我有将记录插入 table 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

这是可以使用的触发器代码。将 inserted 连接到 table 并执行基于集合的更新,而不是尝试逐行更新(这在触发器中从来都不好,因为只要您插入超过 1 行,它就会失败):

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

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