一个独特的约束强制实施,那么,唯一性。与主键约束不同,它将允许空值。
您的错误表示您已将数据库配置为显式禁止重复数据插入。
您可以通过在all_constraints上运行以下查询来找出表上的约束。链接对列
CONSTRAINT_TYPE进行解码,例如
P是主键和
U唯一键。
select * from all_constraints uc where uc.table_name = 'MY_TABLE' and owner = 'DBSCHEMA'
要找出约束中有哪些列,请
all_cons_columns改用或将两者合并为一个查询:
select uc.*, ucc.column_name, ucc.position from all_constraints uc join all_cons_columns ucc on uc.owner = ucc.owner and uc.table_name = ucc.table_name and uc.constraint_name = ucc.constraint_name where uc.table_name = 'MY_TABLE' and uc.owner = 'DBSCHEMA'
对于这两个查询,您都可以添加其他条件,
and constraint_name ='IDX_CO_DETAILS'以查找可能引起问题的特定约束的详细信息。
由于几个原因,您的评论有些令人惊讶。即使是系统创建的约束,例如在创建表时在没有指定名称的情况下直接定义的约束,也应该显示出来。同样,约束名称
IDX...暗示它是一个索引。
如果您运行以下查询,它将告诉您对象是否存在于数据库中:
select * from all_objects where object_name = 'IDX_CO_DETAILS'
我希望
OBJECT_TYPE此查询返回的是
'INDEX'。
然后,以下查询将返回具有该名称,索引类型,与之关联的表以及该表的所有者的每个索引。
select * from all_indexes where index_name = 'IDX_CO_DETAILS'
根据您的错误判断,我进一步希望
UNIQUNESS此查询返回的列为
'UNIQUE'。
这应该可以帮助您跟踪对象。
您还可以使用系统包
dbms_metadata来跟踪对象的DDL。注意它会返回一个块。
select dbms_metadata.get_ddl('INDEX','IDX_CO_DETAILS', schema => 'DBSCHEMA') from dual该参数
schema是可选的。



