Estoy buscando algunos consejos sobre cómo optimizar los procedimientos almacenados par sql. Con la primera consulta estoy insertando, y con la segunda estoy haciendo una actualización, si los datos existen. Lo que quiero hacer es fusionar ambos procedimientos almacenados en uno, donde la consulta verificará si existen los datos que actualizar, de lo contrario inserte una nueva fila. Aquí es lo que tengo en este momento:upsert sql query
actualización de 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
inserto 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
Por lo tanto, me gustaría combinar ambas SP en uno, y el SP a compruebe si ya hay datos para ese UserId que actualización, de lo contrario inserte una nueva fila. ¿Puede alguien ayudarme con esto? Gracias y felices fiestas a todos, Laziale
1 [Puede ser que necesite 'HOLDLOCK' aunque] (http://weblogs.sqlteam.com/dang/archive/2009/01/31/UPSERT-Race-Condition-With-MERGE.aspx) –
@MartinSmith Sí , de acuerdo –
Gracias por su ayuda. que funciona perfecto – Laziale