Postgres视图,在更改表以更改表名称之后,视图仍在查询吗?

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

使用Postgres数据库。我有一个现有表,还有几个查询该表的现有视图。将该表称为“联系人”。

我更改了表,将名称更改为'contacts_backup'。然后,我创建了一个新表,该表的名称与以前的表具有“联系人”的名称相同]

现在看来,如果我查询现有视图,则仍从重命名的表contacts_backup中检索数据,而不是从新表“ contacts”中检索。

可以吗?如何更新视图以查询具有相同名称而不是重命名的contacts_backup的新表?

我的新表实际上是一个外国表,但是原理不应该相同吗?我期望现有的表可以查询新表,而不是旧的重命名表。

postgresql view
1个回答
0
投票

这是因为PostgreSQL不会将视图定义存储为SQL字符串,而是存储为已解析的查询树。

这些解析的查询树不包含所引用对象的名称,而仅包含其对象标识符oid),在重命名对象时不会更改。表列也是如此。这也适用于外国表。

[例如,使用pg_get_viewdef检查视图定义时,解析树将呈现为文本,因此您将看到更改的名称。

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