我有一个T-SQL MERGE
命令在我的SQL Server 2008上运行正常。不幸的是,代码也必须在SQL Server 2005数据库上运行。
我需要更改什么才能使以下代码在SQL Server 2005中运行?
感谢您的帮助。
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);
答案 0 :(得分:5)
将此更改为
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
每个陈述都比MERGE
简单得多