Postgresql 错误:无法从视图中删除列

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

我是 postgresql 新手。谁能建议这个错误的原因和解决方案?然而,如果我选择一个额外的总和(s.length),它会起作用,但我不会在我的结果中这样做。

代码:

create or replace view q1("group",album,year) as
    select g.name, a.title, a.year
    from Groups g, Albums a, Songs s
    where a.made_by = g.id and s.on_album = a.id
    group by a.title, g.name, a.year
    order by sum(s.length) desc 
    limit 1;

错误信息:

错误:无法从视图中删除列

sql postgresql
1个回答
32
投票

正如 PostgreSQL 文档中提到的:

CREATE OR REPLACE VIEW 类似,但是如果视图同名 已经存在,被替换。 新查询必须生成相同的 由现有视图查询生成的列(即 相同的列名、相同的顺序和相同的数据类型),但是 它可能会在列表末尾添加额外的列。 计算 产生的输出列可能完全不同。

参考 Postgres

CREATE VIEW
文档

简单地说,您可以在现有列的末尾添加新列,但不能删除、重新排序、重命名或更改现有列的数据类型。

因此,就您而言,您必须

drop
整个视图并
recreate
它。

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