Oracle具有不同值的多个插入

时间:2011-10-15 09:50:15

标签: oracle oracle10g

如何使用不同的记录集更新oracle数据库中的多行。

1 个答案:

答案 0 :(得分:2)

它不漂亮,但你可以用MERGE INTO,使用UNION的SELECT ... FROM DUAL作为合并源。

假设:

create table writer (
    id integer primary key,
    name varchar2(255) not null
)

你可以这样做:

merge into writer dst
using (
    select 1 as id, 'Edward Luttwak' as name from dual
    union
    select 2 as id, 'Iain Sinclair' as name from dual
) src
on (dst.id = src.id)
when matched then update set dst.name = src.name
when not matched then insert (dst.id, dst.name) values (src.id, src.name);

对于要更新的​​每一行,在子查询中为联合添加一个术语。如果您知道行肯定是更新,并且从不插入,则可以删除整个when matched子句。