SQL> SELECT cc.*
2 FROM all_constraints c
3 JOIN all_cons_columns cc ON (c.owner = cc.owner
4 AND c.constraint_name = cc.constraint_name)
5 WHERE c.constraint_type = 'U'
6 AND c.table_name = 'T';
OWNER CONSTRAINT_NAME TABLE_NAME COLUMN_NAME POSITION
---------- ----------------- -------------- ------------- ----------
VNZ UNIQUE_COL T COLUMN1 1
VNZ UNIQUE_COL T COLUMN2 2
VNZ UNIQUE_COL2 T COLUMN2 1
4条答案
按热度按时间soat7uwm1#
如果oracle为唯一约束创建索引(我不知道是否创建了索引,您需要检查),那么您可以通过
getIndexInfo()
ltskdhd12#
唯一约束通常由索引强制执行。也许用
DatabaseMetaData.getIndexInfo()
找到非唯一性为false的索引?lf5gs5x23#
由于大多数数据库将这些约束存储为索引,因此可以使用前面提到的databasemetadata.getindexinfo()。在使用postgresql时,这对我来说非常有效。
重要的是打电话
getIndexInfo()
第四个参数为true
文件上说:unique
-如果为true,则只返回唯一值的索引;如果为false,则返回索引,无论是否唯一代码如下:
您可以拨打:
并获取给定表的所有唯一约束的列表。约束是按索引分组的,因为一个索引可以覆盖多列(如果它们在组合中是唯一的)。
t2a7ltrp4#
您可以查询数据字典: