Kem*_*rcı 6 oracle primary-key
我刚刚尝试将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
Run Code Online (Sandbox Code Playgroud)
一种可能的解释是直接路径加载(来自SQL*Loader)使您的唯一索引处于具有重复主键的不可用状态.
| 归档时间: |
|
| 查看次数: |
24678 次 |
| 最近记录: |