2013-04-25 35 views
3

是否可以在兩列上創建條件索引?具有兩個標識符的Oracle條件索引

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) 

回答

6

是的,但你必須每列執行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是多餘的)。