Sql 将复制值从A列插入B列后创建触发器
我正在尝试在SQL server中创建一个触发器,以自动将插入行中的值复制到另一列 我有一个将记录插入表KNT的应用程序。插入后,我需要将值从列GID复制到列ID 现在我有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
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