索引创建中的案例陈述

时间:2018-08-15 17:32:33

标签: sql postgresql indexing ddl

在创建UNIQUE INDEX时如何使用CASE语句?

我的陈述如下

CREATE UNIQUE INDEX my_unique_creation 
    ON junk ((CASE 
                WHEN nlevel(path) > 1 THEN (subpath(path, 0, -1), name) 
                ELSE (path, name) END)) 
WHERE my_col IS NULL;

这在以下行中失败:

pq: column "" has pseudo-type record

1 个答案:

答案 0 :(得分:1)

CASE应该只返回单列,而不是元组(“记录”)。

CREATE UNIQUE INDEX my_unique_creation 
    ON junk ((CASE 
                WHEN nlevel(path) > 1 THEN subpath(path, 0, -1) 
                ELSE path 
              END), name) 
WHERE my_col IS NULL;