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

时间:2019-07-17 20:12:42

标签: 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
    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

1 个答案:

答案 0 :(得分:1)

这是将起作用的触发代码。将Scaffold-DbContext -Connection "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\database.mdb;Database Password=mypass" -Provider EntityFrameworkCore.Jet 加入到表格中,然后进行基于集合的更新,而不是尝试逐行更新(这在触发器中永远不会有用,因为每次插入多于1行都会失败):

inserted

但是,如果需要这样做,我真的建议您仅将值插入应用程序的两列中。完全令人怀疑为什么您需要从另一个字段开始重复相同的数据,但是让应用程序执行几乎没有任何工作,而触发器则增加了整个额外过程。