Answers:
您需要查询数据字典,特别是USER_CONS_COLUMNS
视图以查看表列和相应的约束:
SELECT *
FROM user_cons_columns
WHERE table_name = '<your table name>';
仅供参考,除非您专门使用小写名称(使用双引号)创建表,否则表名将默认为大写,因此请确保在查询中也是如此。
如果然后您希望查看有关约束本身的更多信息,请查询USER_CONSTRAINTS
视图:
SELECT *
FROM user_constraints
WHERE table_name = '<your table name>'
AND constraint_name = '<your constraint name>';
如果表保存在不是您的默认架构的架构中,那么您可能需要将视图替换为:
all_cons_columns
和
all_constraints
添加到where子句:
AND owner = '<schema owner of the table>'
owner
在这两个领域(用户|全部| DBA)_constraints和(用户|全部| DBA)_cons_columns是约束的所有者,而不是表的所有者(每Oracle文档)。在这两个视图中,表所有者都不是可用字段。这是否意味着约束所有者和表所有者必须相同?
企业数据库通常有多个用户,但我并没有错:
SELECT * FROM ALL_CONSTRAINTS WHERE table_name = 'YOUR TABLE NAME' ;
摘自Oracle文档
使用以下两个命令之一。一切都必须大写。表名必须用引号引起来:
--SEE THE CONSTRAINTS ON A TABLE
SELECT COLUMN_NAME, CONSTRAINT_NAME FROM USER_CONS_COLUMNS WHERE TABLE_NAME = 'TBL_CUSTOMER';
--OR FOR LESS DETAIL
SELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'TBL_CUSTOMER';
USER_CONS_COLUMNS