3
다음 코드는 작동하지 않습니다. 주소가 없으면 새 레코드가 삽입되지 않습니다. 그러나 주소가 존재하면 업데이트됩니다.SQL 병합 문이 저장 프로 시저에서 작동하지 않습니다.
ALTER PROCEDURE [Users].[UpdateAddress]
@UserId int,
@Address1 varchar(100),
@Address2 varchar(100),
@Town varchar(100),
@County varchar(50),
@PostCode varchar(50),
@Country varchar(50),
@Type INT
AS
MERGE [Users].[Addresses] AS Target
USING (SELECT UserId FROM [Users].[Addresses] WHERE UserId = @UserId) AS Source
ON (Source.UserId = Target.UserId)
WHEN MATCHED THEN
UPDATE SET Target.Address1 = @Address1,
Target.Address2 = @Address2,
Target.Town = @Town,
Target.County = @County,
Target.Postcode = @Postcode,
Target.Country = @Country
WHEN NOT MATCHED BY TARGET THEN
INSERT ([UserId], [Address1], [Address2], [Town], [County], [PostCode], [Country], [Modified], [Type])
VALUES(@UserId, @Address1, @Address2, @Town, @County, @PostCode, @Country, GetDate(), @Type);
Perfect! 감사 – ChrisBint