在我的sql脚本中我想用最后一个查询返回一些记录。对于该查询,我使用聚合:
CREATE AGGREGATE array_agg_mult(anyarray) (
SFUNC = array_cat,
STYPE = anyarray,
INITCOND = '{}'
);
因此,如果我两次调用脚本,我必须在最后删除聚合。但是脚本应该以自定义sql查询结束。有没有办法说出类似CREATE OR REPLACE
的内容?
答案 0 :(得分:7)
您可以在DROP AGGREGATE IF EXISTS array_agg_mult(anyarray);
CREATE AGGREGATE
请注意,如果您更改参数/签名,这可能会引发错误,因此如果您这样做,则需要进行调整。
手动参考: https://www.postgresql.org/docs/current/static/sql-dropaggregate.html
答案 1 :(得分:1)
DO $$ BEGIN
CREATE AGGREGATE array_agg_mult(anyarray) (
SFUNC = array_cat,
STYPE = anyarray,
INITCOND = '{}'
);
EXCEPTION
WHEN duplicate_function THEN NULL;
END $$;
似乎也能正常工作。