tou*_*dra 5 oracle unique-constraint composite-primary-key
Col1,并Col2作为一个复合主键pk_composit_key,那就是自动为约束创建唯一索引.Col3.我放弃了pk_composit_key约束:
ALTER TABLE table_name DROP CONSTRAINT pk_composit_key;
现在,当我试图插入记录时,我得到了ORA-00001: unique constraint pk_composit_key violated.
您提到导出和导入架构,如果在显示此行为的环境中发生这种情况,它将解释您所看到的内容; 至少如果你使用遗留imp而不是数据泵impdp.
从导出转储文件中读取表对象时将导入它们.转储文件按以下顺序包含对象:
- 类型定义
- 表定义
- 表数据
- 表索引
- 完整性约束,视图,过程和触发器
- 位图,基于功能和域索引
因此,将导入唯一索引,然后将创建约束.
- 如果主键是使用现有索引创建的,则不会删除索引.
- 如果主键是使用系统生成的索引创建的,则会删除索引.
由于导入顺序,约束使用现有索引,因此第一个项目符号适用; 并且在删除约束时保留索引.
即使未自动创建索引,也可以使用该drop index子句删除索引:
ALTER TABLE table_name DROP CONSTRAINT pk_composit_key DROP INDEX;
Run Code Online (Sandbox Code Playgroud)
另请参阅My Oracle Support说明370633.1; 和1455492.1表明数据泵导入也会发生类似的行为.我不知道有任何方法可以检查索引是否与此级别的约束相关联; 手动或自动创建索引时,dba_constraints或dba_indexes视图没有区别.包括drop index会使它保持一致.