繁体   English   中英

SQL服务器可以代替更新强制插入新行

[英]Can SQL server instead of update force insert a new row

是否有可能在SQL Server 2008+中强制将表上的UPDATE语句转换为INSERT语句,从而创建具有旧列和更新列的新行?

是的,这是INSTEAD OF UPDATE TRIGGER的典型场景。

在表上创建以下触发器,它将为表上的每个更新插入一行。 你可以在你的触发器中有更多的逻辑,但这只是一个基本的定义,只是为了给你一些想法。

在INSTEAD of UPDATE触发器中,您可以访问两个系统表Inserteddeleted

Inserted表将保存Update语句正在更新的行的新值。

Deleted表将保存Update语句正在更新的行的旧值。

演示触发器

CREATE TRIGGER tr_Table_Instead_Of_Update
ON TABLE_NAME
INSTEAD OF UPDATE
AS
BEGIN
 SET NOCOUNT ON;

 INSERT INTO TABLE_NAME(Col1, Col2 , Col3)
 SELECT Col1, Col2 , Col3
 FROM inserted 

END

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM