带有两个标识符的 Oracle 条件索引

标签 oracle indexing

是否可以在两列上创建条件索引?

CREATE UNIQUE INDEX idx_dup_wfc
    ON WF_WORKFLOW_CLASS (CASE WHEN is_active = 1
      THEN (NAME, DEPT_OWNER)
         ELSE NULL
      END)

返回 ORA-00906: missing left parenthesis但是下面的作品
CREATE UNIQUE INDEX idx_dup_wfc
    ON WF_WORKFLOW_CLASS (CASE WHEN is_active = 1
      THEN NAME
         ELSE NULL
      END)

最佳答案

是的,但您必须每列执行一个 CASE:

CREATE UNIQUE INDEX idx_dup_wfc
    ON WF_WORKFLOW_CLASS 
     (CASE WHEN is_active = 1 THEN NAME END
     ,CASE WHEN is_active = 1 THEN DEPT_OWNER END
     )

(代码中的 ELSE 是多余的)。

关于带有两个标识符的 Oracle 条件索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16218609/

相关文章:

java - 是否可以通过命令提示符创建 Solr 索引?

oracle - 无法在 python "ImportError: DLL load failed: The specified procedure could not be found."中导入 cx_Oracle

java - IO 错误 : The Network Adapter could not establish the connection when running oracle DB as docker container

sql - ruby on rails 为 oracle View /函数准备的语句

mysql - 使用 Rails 应用程序建立数据库索引

mysql - Sphinx,更新已删除条目的索引

python - 使用日期时间键的字典搜索

oracle - 数据库结构(oracle、mysql、postgreSQl..)到HSQLDB或H2的转换工具

sql - Oracle - 字符串组合排列

sql - 如何确定 SQL Server 中索引的大小?