PostgreSQL创建索引并检查表是否存在。

3
我运行的是PostgreSQL 9.6.4版本,需要创建一个索引,但在创建索引之前,我想检查表格和索引是否已经存在。我尝试了以下操作,但出现了语法错误:
DO $$
BEGIN
IF (SELECT to_regclass('public.areacrossing') != null) THEN 
    CREATE INDEX IF NOT EXISTS areac_d_idx
    ON public.areacrossing USING btree
    (d_id)
    TABLESPACE pg_default;
END 
$$


ERROR:  ERROR:  Syntaxerror at the end of input
LINE 27: $$
         ^


SQL state: 42601
Character: 508

感谢Laurenz Albe,解决方案如下:
DO $$
BEGIN
    IF (SELECT to_regclass('public.areacrossing') IS NOT null) 
    THEN 
        CREATE INDEX IF NOT EXISTS areac_d_idx
        ON public.areacrossing USING btree
        (d_id)
        TABLESPACE pg_default;
    END IF;
END $$;

$$ 后面缺少 ; 了吗? - Jorge Campos
1个回答

2

您必须使用 END IF; 来关闭 IF 代码块。

适当的缩进可以帮助您避免此类错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接