gpt4 book ai didi

oracle - 主键列如何在 Oracle 中具有重复值?

转载 作者:行者123 更新时间:2023-12-04 14:50:22 27 4
gpt4 key购买 nike

我刚刚尝试将一个 Oracle DB 导入到另一个数据库,但它给出了一个错误,表明在主键列中找到了重复的值。然后我检查了源表,是的,PK中确实存在重复值,并且检查PK已启用且正常。现在我想知道这怎么会发生。

编辑:我发现索引处于不可用状态。我不知道它是怎么发生的,只是发现了这个:
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1859798300346695894

最佳答案

假设您的主键确实在此列上定义并启用,您可以检查它是否经过验证。 Oracle 仅保证经过验证的约束对所有行都为真。
这是一个带有重复值的未经验证的主键的场景:

SQL> DROP TABLE t;     
Table dropped

SQL> CREATE TABLE t (ID NUMBER);
Table created

SQL> INSERT INTO t VALUES (1);
1 row inserted

SQL> INSERT INTO t VALUES (1);
1 row inserted

SQL> CREATE INDEX t_id_idx ON t(ID);
Index created

SQL> ALTER TABLE t ADD CONSTRAINT pk_id PRIMARY KEY (ID) NOVALIDATE;
Table altered

SQL> SELECT * FROM t;

ID
----------
1
1

SQL> SELECT constraint_type, status, validated
2 FROM user_constraints
3 WHERE constraint_name = 'PK_ID';

CONSTRAINT_TYPE STATUS VALIDATED
--------------- -------- -------------
P ENABLED NOT VALIDATED

更新:
likely explanation是直接路径加载(来自 SQL*Loader)使您的唯一索引处于无法使用的状态,并且具有重复的主键。

关于oracle - 主键列如何在 Oracle 中具有重复值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7612167/

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