我正在为依赖于Oracle数据库的产品编写模式升级脚本.在一个领域,我需要在表上创建一个索引 - 如果该索引尚不存在.有没有一种简单的方法可以检查是否存在我知道Oracle脚本名称的索引?
它与SQL Server中的类似:IF NOT EXISTS(SELECT*FROM SYSINDEXES WHERE NAME ='myIndex')//然后创建myIndex
我需要能够查询PostgreSQL数据库以获取有关索引的信息及其详细信息.
在SQL Server上,我可以执行以下操作来获取所有索引的所有表/索引/列的列表:
select TABLE_NAME, INDEX_NAME, NON_UNIQUE, COLUMN_NAME
from INFORMATION_SCHEMA.STATISTICS
where TABLE_SCHEMA = 'my_schema'
order by TABLE_NAME, INDEX_NAME, SEQ_IN_INDEX
Run Code Online (Sandbox Code Playgroud)
似乎INFORMATION_SCHEMA的STATISTICS表是SQL Server扩展.如何在PostgreSQL中执行等效操作?
编辑:我特别试图返回一个非规范化的结果集,如下所示
TableName, IndexName, UniqueFl, ColumnName
Run Code Online (Sandbox Code Playgroud)
所以我为所有索引中的每一列都返回一行.
谢谢,乔恩