如果该视图是使用依赖表的主键列创建的,是否可以检索视图列表以及主键列名称?
例如:
Employee(ID PRIMARY KEY, FIRST NAME, LAST NAME, SALARY, DEPARTMENT)
从 Employee 表派生的视图:
EMPLOYEEVIEW(ID, FIRST NAME, LAST NAME)
EMPLOYEEVIEW
满足我的约束。我需要获得这些观点。期望的结果类似于EMPLOYEEVIEW ID
.
如果该视图是使用依赖表的主键列创建的,是否可以检索视图列表以及主键列名称?
例如:
Employee(ID PRIMARY KEY, FIRST NAME, LAST NAME, SALARY, DEPARTMENT)
从 Employee 表派生的视图:
EMPLOYEEVIEW(ID, FIRST NAME, LAST NAME)
EMPLOYEEVIEW
满足我的约束。我需要获得这些观点。期望的结果类似于EMPLOYEEVIEW ID
.
要获取当前模式中表的主键约束,可以使用以下查询:
select *
from user_constraints
where constraint_type = 'P'
所以要在你的视图中搜索主键,我会使用这样的查询
select *
from user_views v
join user_constraints c on upper(v.text) like '%'||c.table_name||'%'
where c.constraint_type = 'P'
and v.view_name = 'YOUR_VIEW_NAME'
不幸的是,user_views 视图中的文本字段是可怕的 LONG 数据类型,因此您需要创建自己的函数(或谷歌函数)来将 LONG 转换为 VARCHAR,因此您可以使用 upper() 并喜欢它。