改变VIEW限制

时间:2015-02-19 16:01:52

标签: sql postgresql

我创建了以下视图:

CREATE VIEW games_lost as 
    select p.id, p.name, count(m.loser) as ng
    from players p left join matches m 
    on p.id=m.loser
    where m.tournament_id = 0
    group by p.id, p.name;

我希望更新给定的tournament_id的WHERE 看了PostgreSQL docs,但没有找到解释如何去做。

2 个答案:

答案 0 :(得分:2)

你做不到。您必须使用CREATE OR REPLACE VIEW并从头开始重新创建整个事物。来自the Postgres docs

  

ALTER VIEW更改视图的各种辅助属性。 (如果您要修改视图的定义查询,请使用CREATE OR REPLACE VIEW。)

(强调补充)

答案 1 :(得分:1)

似乎对这里使用观点存在误解。 SELECT查询中使用的视图与表格完全相同。

您可以使用CREATE OR REPLACE VIEW定期替换视图,但这将是非常糟糕的设计。

所以我的建议是视图返回按锦标赛ID分组的所有锦标赛的结果:

CREATE VIEW games_lost as 
    select p.id, p.name, m.tournament_id, count(m.loser) as ng
    from players p left join matches m 
    on p.id=m.loser
    group by p.id, p.name,m.tournament_id;

然后在代码中,您将使用WHERE子句中的特定id查询视图:

SELECT id, name, ng FROM games_lost WHERE tournament_id = 0;