300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 使用 MERGE 在单个语句中对表执行 INSERT 和 UPDATE 操作

使用 MERGE 在单个语句中对表执行 INSERT 和 UPDATE 操作

时间:2023-09-04 16:08:31

相关推荐

使用 MERGE 在单个语句中对表执行 INSERT 和 UPDATE 操作

数据库|mysql教程

使用,MERGE,单个,语句,执行,INSERT,UPDAT

数据库-mysql教程

控流php源码,ubuntu指令安装qt,k8s创建tomcat,深圳爬虫助理招聘,为什么要java不用php,seo网站合同lzw

一种常见的应用场景是在存在匹配行时更新表中的一个或多个列,或在不存在匹配行时将数据作为新行插入。 此操作一般通过将参数传递给包含相应 UPDATE 和 INSERT 语句的存储过程来执行。 借助 MERGE 语句,将可以在单个语句中一起执行这两项任务。 下面的示例

rc523源码,vscode误删git,ubuntu enca,boot自带tomcat,sqlite有哪些特点,织梦qq登陆插件下载,跨屏前端框架设计,python爬虫使用网站查询,php判断是否为字符,seo招聘广州,空单号网站源码,请将如下代码复制到您网页的html中,设计新闻发布网站模板lzw

源码复制,vscode中js的插件,ubuntu udp c,tomcat重复循环启动,兰州爬虫市场,php数组按字母排序,欧美seo6在线观看,公司网站 cms,html模板查询lzw

一种常见的应用场景是在存在匹配行时更新表中的一个或多个列,或在不存在匹配行时将数据作为新行插入。

此操作一般通过将参数传递给包含相应 UPDATE 和 INSERT 语句的存储过程来执行。

借助 MERGE 语句,将可以在单个语句中一起执行这两项任务。

下面的示例显示了一个同时包含 INSERT 语句和 UPDATE 语句的存储过程。

随后,此示例对该过程进行了修改,以使用单个 MERGE 语句执行等效的操作。

.CodeEntity .code_pieces ul.piece_anchor{width:25px;position:absolute;top:25px;left:-30px;z-index:1000;}.CodeEntity .code_pieces ul.piece_anchor li{width:25px;background: #efe;margin-bottom:2px;}.CodeEntity .code_pieces ul.piece_anchor li{border-left:3px #40AA63 solid;border-right:3px #efe solid;}.CodeEntity .code_pieces ul.piece_anchor li:hover{border-right:3px #40AA63 solid;border-left:3px #efe solid;}.CodeEntity .code_pieces ul.piece_anchor li a{color: #333;padding: 3px 10px;}.CodeEntity .code_pieces .jump_to_code{visibility:hidden;position:relative;}.CodeEntity .code_pieces .code_piece:hover .jump_to_code{visibility:visible;}.CodeEntity .code_pieces .code_piece:hover .jump_to_code a{text-decoration:none;}.CodeEntity .code_pieces h2 i{float:right;font-style:normal;font-weight:normal;}.CodeEntity .code_pieces h2 i a{font-size:9pt;background: #FFFFFF;color:#00A;padding: 2px 5px;text-decoration:none;}

USE AdventureWorks;GOCREATE PROCEDURE dbo.InsertUnitMeasure @UnitMeasureCode nchar(3), @Name nvarchar(25)AS BEGIN SET NOCOUNT ON;-- Update the row if it exists. UPDATE Production.UnitMeasureSET Name = @NameWHERE UnitMeasureCode = @UnitMeasureCode-- Insert the row if the UPDATE statement failed.IF (@@ROWCOUNT = 0 )BEGIN INSERT INTO Production.UnitMeasure (UnitMeasureCode, Name) VALUES (@UnitMeasureCode, @Name)ENDEND;GO-- Test the procedure and return the results.EXEC InsertUnitMeasure @UnitMeasureCode = ABC, @Name = Test Value;SELECT UnitMeasureCode, Name FROM Production.UnitMeasureWHERE UnitMeasureCode = ABC;GO-- Rewrite the procedure to perform the same operations using the MERGE statement.-- Create a temporary table to hold the updated or inserted values from the OUTPUT clause.CREATE TABLE #MyTempTable (ExistingCode nchar(3),ExistingName nvarchar(50),ExistingDate datetime,ActionTaken nvarchar(10),NewCode nchar(3),NewName nvarchar(50),NewDate datetime );GOALTER PROCEDURE dbo.InsertUnitMeasure @UnitMeasureCode nchar(3), @Name nvarchar(25)AS BEGIN SET NOCOUNT ON; MERGE Production.UnitMeasure AS target USING (SELECT @UnitMeasureCode, @Name) AS source (UnitMeasureCode, Name) ON (target.UnitMeasureCode = source.UnitMeasureCode) WHEN MATCHED THEN UPDATE SET Name = source.NameWHEN NOT MATCHED THEN INSERT (UnitMeasureCode, Name) VALUES (source.UnitMeasureCode, source.Name) OUTPUT deleted.*, $action, inserted.* INTO #MyTempTable;END;GO-- Test the procedure and return the results.EXEC InsertUnitMeasure @UnitMeasureCode = ABC, @Name = New Test Value;EXEC InsertUnitMeasure @UnitMeasureCode = XYZ, @Name = Test Value;EXEC InsertUnitMeasure @UnitMeasureCode = ABC, @Name = Another Test Value;SELECT * FROM #MyTempTable;-- Cleanup DELETE FROM Production.UnitMeasure WHERE UnitMeasureCode IN (ABC,XYZ);DROP TABLE #MyTempTable;GO

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。