【发布时间】:2013-07-03 11:47:35
【问题描述】:
我将使用 MERGE 来插入或更新表,具体取决于它是否存在。这是我的查询,
declare @t table
(
id int,
name varchar(10)
)
insert into @t values(1,'a')
MERGE INTO @t t1
USING (SELECT id FROM @t WHERE ID = 2) t2 ON (t1.id = t2.id)
WHEN MATCHED THEN
UPDATE SET name = 'd', id = 3
WHEN NOT MATCHED THEN
INSERT (id, name)
VALUES (2, 'b');
select * from @t;
结果是,
id name
1 a
我认为应该是,
id name
1 a
2 b
【问题讨论】:
-
@MAri 你是什么意思?
-
对于每个 DML 操作,您必须提交事务。那么只有你才能看到最新的数据..
-
@Mari 我没有任何交易
-
这么简单的情况为什么要切换到
MERGE? Thar be dragons,恕我直言。 -
@AaronBertrand,查看此链接,stackoverflow.com/questions/17039925/…