我试图在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
答案 0 :(得分:1)
这是将起作用的触发代码。将Scaffold-DbContext -Connection "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\database.mdb;Database Password=mypass" -Provider EntityFrameworkCore.Jet
加入到表格中,然后进行基于集合的更新,而不是尝试逐行更新(这在触发器中永远不会有用,因为每次插入多于1行都会失败):
inserted
但是,如果需要这样做,我真的建议您仅将值插入应用程序的两列中。完全令人怀疑为什么您需要从另一个字段开始重复相同的数据,但是让应用程序执行几乎没有任何工作,而触发器则增加了整个额外过程。