簡體   English   中英

基於函數的索引在 oracle 12c 中不起作用

[英]functional based index not works in oracle 12c

我在嘗試創建基於函數的索引時遇到了 oracle 12c 的問題。 所以我有一張這樣的表:

CREATE TABLE test_table(
    id integer PRIMARY KEY,
    delete_date DATE,
    msisdn varchar(20)
);

如果 delete_date 為空,則 msisdn 應是唯一的。 我在這里找到了一個解決方案,但是當我嘗試它時,ORA-02158:拋出無效的 CREATE INDEX 選項。 這是我所做的:

    CREATE UNIQUE INDEX test_table_msisdn_index 
ON test_table(CASE WHEN delete_date IS NULL THEN msisdn end);

CREATE UNIQUE INDEX test_table_msisdn_index 
ON test_table(CASE WHEN delete_date IS NULL THEN msisdn ELSE NULL end);

還有很多像這樣的消息來源說可以使用 case 語句,但對我來說它不起作用。 這個邏輯如何以不同的方式實現? 請注意,如果插入重復的 msisdn 並且 delete_date 為空,則將拋出唯一約束違反異常。 感謝您的關注,並對可能重復的問題表示抱歉。

我不知道為什么,但問題不在於 DBMS,問題在於我的客戶端。 我正在使用 DBeaver community 7.2.0,如果在此客戶端中運行腳本,您將獲得 ORA-02158: invalid CREATE INDEX 選項。 我用 jetbrains DataGrip 嘗試過它,它有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM