【发布时间】:2017-03-06 19:06:40
【问题描述】:
我最近收到一个案例,我的客户遇到了 ORA-00001:违反唯一约束错误。当程序试图截断两个表然后将数据插入其中时,就会发生这种情况。 从错误日志文件中,截断步骤已完成, 从 INTERNET_GROUP 中删除 从 INTERNET_ITEM 中删除
但在此之后,插入 Internet_group 表触发了 ORA-00001 错误。我想知道是否有与此错误相关的任何数据库设置?我从未使用过 Oracle,我想知道 Oracle 是否使用 SELECT 语句对一行进行了锁定,在这种情况下,该行被锁定并且不会以某种方式被删除?任何帮助表示赞赏。
【问题讨论】:
-
截断!=删除,但可能不相关。您确定它不只是尝试插入多个冲突行吗?当然,与现有数据相比,您要插入的数据本身必须是唯一的,而不仅仅是。而且您确定删除没有回滚 - 发生这种情况后您检查过表中的数据吗? (可能你有一个损坏的索引或其他东西,但首先排除明显的)
-
你能举一个可重现的例子吗?或者至少涉及到 DDL/DML?
-
删除提交了吗?
-
听起来像是一个批量插入的东西——在同一个批量中,您使用相同的键插入多行。你如何插入表格?你使用“插入选择”吗?