2014-01-27 53 views
0

是否有可能在db2中創建條件索引?DB2數據庫中的條件索引

相同甲骨文:

CREATE UNIQUE INDEX my_index ON my_table (
    CASE WHEN my_column = 1 
     THEN indexed_column 
     ELSE NULL 
    END); 

或MSSQL:

CREATE UNIQUE INDEX my_index 
    ON my_table (indexed_column) WHERE my_column = 1 

謝謝:)

+0

如果我沒有弄錯,像第一個應該在DB2中工作。當你嘗試時發生了什麼? –

+0

當我嘗試它時,我得到: SQL錯誤:DB2 SQL錯誤:SQLCODE = -104,SQLSTATE = 42601,SQLERRMC = CREATE UNIQUE INDEX UNQ_SINGLE_ACTIV; BEGIN-OF-STATEMENT; ,DRIVER = 3.57.82 – locacow

回答

0

這看起來像一個人爲的例子,但我沒有看到的任何好處索引只包含值1和NULL。

從DB2 LUW 10.5開始支持基於表達式的索引。如果您無法升級,您可以使用計算列模擬行爲(這是Oracle在後臺執行的操作)。

+0

這是因爲每行都有一個標誌,無論它是否處於活動狀態,我只想索引活動記錄。 無法升級,因爲我需要支持不同的數據庫版本。 – locacow

+0

_「我只想索引活動記錄」_ - 如果您收集分佈統計信息,則不需要。 – mustaccio

0

The uniqueness is also checked during the execution of the CREATE INDEX statement. If the table already contains rows with duplicate key values, the index is not created.