以迭代方式将 GIST 索引添加到空间表

问题描述 投票:0回答:0

我正在尝试以一种通用的方式将 GIST 索引添加到我的 postgres/postgis 数据库中。问题是有些表已经有一个 GIST 索引,所以我想忽略它们。我将来可能会创建一个新的数据库,所以我想尽可能地使它通用,所以我正在使用结构表。我正在使用 Do 块,但我不明白为什么系统不想要继续。

我收到一个非常不明确的错误,我不知道如何继续。

DO $$ 
DECLARE 
  table_name text;
BEGIN 
    FOR table_name IN (SELECT f_table_name FROM information_schema.tables WHERE geometry_columns where not(f_table_name ilike '%view%') and not(f_geometry_column ilike '%st_union%') LOOP
        BEGIN;
            EXECUTE format('CREATE INDEX "gist_%I" ON %I USING GIST (geom);', table_name || '_index', table_name);
        EXCEPTION WHEN others THEN
            RAISE notice  'Error occurred creating index for table %: %', table_name, SQLERRM;
        END;
    END LOOP;
END $$;

SQL 错误 [25P02]:错误:当前事务被中止,命令被忽略直到事务块结束
错误位置:line: 1 pos: 1

postgresql postgis
© www.soinside.com 2019 - 2024. All rights reserved.