Tôi đang tìm một số lời khuyên làm thế nào để tối ưu hóa các thủ tục lưu trữ vài sql. Với truy vấn thứ nhất tôi đang thực hiện chèn và với truy vấn thứ hai tôi đang cập nhật, nếu dữ liệu tồn tại. Những gì tôi muốn làm là hợp nhất cả hai thủ tục được lưu trữ trong một, trong đó truy vấn sẽ kiểm tra xem dữ liệu có tồn tại hay không, hãy chèn một hàng mới. Dưới đây là những gì tôi có vào lúc này:upsert truy vấn sql
cập nhật 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,
[email protected],
WHERE UserId = @UserId
END
chèn SP:
ALTER PROCEDURE [dbo].[InsertStep1](@UserId nvarchar(50), @First_Name nvarchar(50), @Last_Name 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
Vì vậy, tôi muốn kết hợp cả SP trong một, và các SP để kiểm tra xem liệu đã có dữ liệu cho UserId đó hơn bản cập nhật chưa, hãy chèn một hàng mới. Ai đó có thể giúp tôi với điều này. Cảm ơn và hạnh phúc ngày lễ mọi người, Laziale
+1 [Có thể cần 'HOLDLOCK' mặc dù] (http://weblogs.sqlteam.com/dang/archive/2009/01/31/UPSERT-Race-Condition-With-MERGE.aspx) –
@MartinSmith Yep , đồng ý –
Cảm ơn sự giúp đỡ của bạn. hoạt động hoàn hảo – Laziale