Reputation: 11385
I have got a T-SQL MERGE
command that works fine on my SQL Server 2008. Unfortunately, the code has to work on a SQL Server 2005 database, too.
What would I have to change, to make the following code runnable in SQL Server 2005?
Thank you for your help.
DECLARE @CNVAL varchar(100) = 'xyz' DECLARE @ATRBT varchar(100) = 'abcde' DECLARE @CON varchar(100) = 'fgh'
MERGE into CNEXTR as target
USING (VALUES( @CON, @ATRBT, @CNVAL))
AS source([Name], ATTR, CNVAL)
ON (target.[Name] = source.[Name])
AND (target.ATTR = source.ATTR)
WHEN MATCHED THEN
UPDATE SET
CNVAL = source.CNVAL
WHEN NOT MATCHED THEN
INSERT([Name], ATTR, CNVAL)
VALUES(source.[Name], source.ATTR, source.CNVAL);
Upvotes: 0
Views: 442
Reputation: 432180
Change this to
BEGIN TRAN
UPDATE CNEXTR
SET CNVAL = @CNVAL
WHERE [Name] = @CON AND ATTR = @ATRBT;
IF @@ROWCOUNT = 0
INSERT CNEXTR ([Name], ATTR, CNVAL)
VALUES(@CON, @ATRBT, @CNVAL);
COMMIT TRAN
Each statement will be far simpler than the MERGE
Upvotes: 5