upsert sql查询
发布时间:2020-05-23 23:10:07 所属栏目:MsSql 来源:互联网
导读:我正在寻找一些建议如何优化几个sql存储过程. 使用第一个查询我做插入,与第二个我正在更新,如果数据存在. 我想做的是将两个存储过程合并在一起,其中查询将检查数据是否存在而不是更新,否则插入新行. 这是我现在在这里 更新SP: ALTER PROCEDURE [dbo].[Update
|
我正在寻找一些建议如何优化几个sql存储过程.
更新SP: ALTER PROCEDURE [dbo].[UpdateStep1](@UserId nvarchar(50),@First_Name nvarchar(50),@Last_Name nvarchar(50),@TitlePosition nvarchar(30))
AS
BEGIN
UPDATE Company_Information
SET First_Name = @First_Name,Last_Name = @Last_Name,Title_Position=@TitlePosition,WHERE UserId = @UserId
END
插入SP: ALTER PROCEDURE [dbo].[InsertStep1](@UserId nvarchar(50),@TitlePosition nvarchar(30))
AS
BEGIN
INSERT INTO Company_Information(UserId,First_Name,Last_Name,Title_Position)
VALUES
(@UserId,@First_Name,@Last_Name,@TitlePosition)
END
所以,我想将两个SP合并在一起,并且SP检查是否已经存在UserId的数据而不是update,否则插入一个新行. 解决方法MERGE Statement?CREATE PROCEDURE [dbo].[MERGEStep1](@UserId nvarchar(50),@TitlePosition nvarchar(30)) AS BEGIN MERGE Company_Information WITH(HOLDLOCK) AS T USING(SELECT 1 S) S ON T.UserId = @UserId WHEN MATCHED THEN UPDATE SET First_Name = @First_Name,Title_Position=@TitlePosition WHEN NOT MATCHED THEN INSERT (UserId,Title_Position) VALUES(@UserId,@TitlePosition); END (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
