在 Oracle 中,我可以执行“将值插入或更新到表中”吗

Posted

技术标签:

【中文标题】在 Oracle 中,我可以执行“将值插入或更新到表中”吗【英文标题】:In Oracle, can I do an "insert or update values into TABLE" 【发布时间】:2010-10-06 13:46:54 【问题描述】:

我有一个包含两个数字列的表,并且对它们都有一个唯一约束。我想插入一对新的值,除非这对已经存在。最简单的方法是什么?

如果我这样做了

insert into TABLE values (100,200) 

并且这对已经存在我得到一个 ORA-00001 错误,所以我想做类似的事情

insert or update into TABLE values (100,200)

【问题讨论】:

如果这对值已经存在,你要更新什么? Oracle: how to UPSERT (update or insert into a table?) 的可能重复项 @Nellius:没什么,真的。但如果它们不存在 我想插入它们。这些值来自外部来源。我想将它们插入数据库,但我不想编写额外的代码来首先检查它们是否已经存在。 @Tony Andrews:是的,此外,您的回答(合并“老式方式”)对我来说效果很好。谢谢。我应该将此作为重复项关闭,还是您想重新输入您的声誉答案? :-) 我不认为那会是板球! 【参考方案1】:

您可以使用MERGE

【讨论】:

【参考方案2】:

你可以试试这样的:

insert into table
select :a, :b from dual
where not exists (select 1 from table where column1 = :a and column2=:b)

【讨论】:

以上是关于在 Oracle 中,我可以执行“将值插入或更新到表中”吗的主要内容,如果未能解决你的问题,请参考以下文章

如何在oracle中执行db脚本并输出日志文件

如何在 SQuirrel SQL 中查看 Oracle 执行计划?

linux上自动执行oracle

oracle如何批量执行某个文件夹下面的多个.sql脚本

oracle如何执行多条create 语句

Datagrip:带参数在oracle中执行sql语句