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