【发布时间】:2011-01-21 03:14:51
【问题描述】:
我有这个简单的例子,我似乎无法开始工作:
MERGE INTO mytable mt
USING dual
ON (mt.id = 'AAA' )
WHEN MATCHED THEN
UPDATE SET mt.name = 'updated'
WHEN NOT MATCHED THEN
INSERT (mt.id , mt.name )
VALUES ('AAA', 'Gooood' );
如果表中存在“AAA”记录,则更新成功。
但如果不存在,则不插入:
Affected rows: 0
Time: 0.003ms
关于我做错了什么的任何线索?
【问题讨论】:
-
您使用什么工具响应“受影响的行:0 时间:0.003ms”?
-
有人想知道 OP 是否在一个会话中没有提交就合并并从另一个会话查询。或者现有应用程序是否正确解释 SQL%ROWCOUNT 模拟的输出。
-
您的表
mytable是否可能不仅仅需要id和name才能进行有效插入? -
@Tony Andrews : 抱歉回答晚了,我不得不换一种方式……我当时使用的工具是 Navicat for Oracle。
标签: sql oracle merge replace upsert