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

Sql 将复制值从A列插入B列后创建触发器,sql,tsql,database-trigger,Sql,Tsql,Database Trigger,我正在尝试在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 A

我正在尝试在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
下面是可以工作的触发代码。将
inserted
加入到表中,并执行基于集合的更新,而不是尝试逐行更新(这在触发器中永远不好,因为插入超过1行时它将失败):


但是,如果需要的话,我真的非常建议将值插入应用程序的两个列中。一开始就需要在另一个字段中复制相同的数据,但让应用程序这样做实际上不会增加任何工作,而触发器会增加整个额外的过程。我在这里看到的唯一错误是变量的名称。你看到了什么错误?对不起。我刚刚纠正了这个问题,但这不是问题
UPDATE k
SET k.ID = i.GID
FROM inserted i
JOIN KNT k on i.GID = k.GID