gpt4 book ai didi

Oracle 相当于 MySQL INSERT IGNORE?

转载 作者:行者123 更新时间:2023-12-03 11:05:03 26 4
gpt4 key购买 nike

我需要更新一个查询,以便它在插入之前检查重复条目不存在。在 MySQL 中,我可以只使用 INSERT IGNORE,这样如果发现重复记录,它就会跳过插入,但我似乎找不到 Oracle 的等效选项。有什么建议?

最佳答案

查看 MERGE 语句。这应该做你想做的 - 它是 WHEN NOT MATCHED将执行此操作的条款。

对于 Oracle 缺乏对真正的 VALUES() 子句的支持,具有固定值的单个记录的语法非常笨拙:

MERGE INTO your_table yt
USING (
SELECT 42 as the_pk_value,
'some_value' as some_column
FROM dual
) t on (yt.pk = t.the_pke_value)
WHEN NOT MATCHED THEN
INSERT (pk, the_column)
VALUES (t.the_pk_value, t.some_column);

另一种方法(例如,如果您要从不同的表进行批量加载)是使用 Oracle 的“错误日志记录”工具。该语句将如下所示:
 INSERT INTO your_table (col1, col2, col3)
SELECT c1, c2, c3
FROM staging_table
LOG ERRORS INTO errlog ('some comment') REJECT LIMIT UNLIMITED;

之后所有会抛出错误的行都可以在表 errlog 中找到。 .您需要创建该 errlog在使用 DBMS_ERRLOG.CREATE_ERROR_LOG 运行插入之前手动手动表(或您选择的任何名称) .

详情请参阅手册

关于Oracle 相当于 MySQL INSERT IGNORE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9332360/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com