如何在 Oracle 中检查索引
我正在为依赖于 Oracle 数据库的产品编写架构升级脚本。 在一个区域中,我需要在表上创建一个索引 - 如果该索引尚不存在。 有没有一种简单的方法可以检查 Oracle 脚本中是否存在我知道名称的索引?
SQL Server 中的情况与此类似: 如果不存在(SELECT * FROM SYSINDEXES WHERE NAME = 'myIndex') // 然后创建我的 myIndex
I am writing a schema upgrade script for a product that depends on an Oracle database. In one area, I need to create an index on a table - if that index does not already exist. Is there an easy way to check for the existence of an index that I know the name of in an Oracle script?
It would be similar to this in SQL Server:
IF NOT EXISTS (SELECT * FROM SYSINDEXES WHERE NAME = 'myIndex')
// Then create my myIndex
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
select count(*) from user_indexes where index_name = 'myIndex'
sqlplus 不支持 IF...,所以你必须使用匿名 PL/SQL 块,这意味着 EXECUTE IMMEDIATE 来执行 DDL。
编辑:正如所指出的,Oracle 以全部大写形式存储未加引号的对象名称。
select count(*) from user_indexes where index_name = 'myIndex'
sqlplus won't support IF..., though, so you'll have to use anonymous PL/SQL blocks, which means EXECUTE IMMEDIATE to do DDL.
Edit: as pointed out, Oracle stores unquoted object names in all uppercase.