【问题标题】:How actually work alter table in postgresql?在 postgresql 中实际如何工作更改表?
【发布时间】:2021-11-15 07:38:35
【问题描述】:

我在重启代码时遇到了问题:

我的代码包含

alter table sch1.t1 set schema sch2;

我收到一个错误

关系 t1 已存在于架构 sch2 中

如果存在,我尝试添加,这意味着如果 t1 不在 sch1 中(已经在 sch2 中),它将被跳过。但是

它给了我同样的问题。

然后我找到了一个名为 t1 的视图。我删除视图并使用另一个名称创建,我的问题解决了。

那么,为什么 PostgeSQL 会在查看 alter table 时发现错误?它是如何工作的?为什么不只是为了桌子?

【问题讨论】:

  • 嗯,这很明显......如果架构sch 可以同时包含t1 表和t1 视图,那么select * from sch.t1 意味着什么?

标签: postgresql alter-table postgresql-11


【解决方案1】:

消息是说,目标表已经存在! 从psql,如果运行\d sch2.t1可以看到表吗?

尝试,在更改之前删除目标表。

【讨论】:

    【解决方案2】:

    模式是命名空间,表和视图是可以在其中创建的一些对象。命名空间不再按对象类型进行子分区,这意味着尝试在同一架构中创建具有相同名称的视图和表是错误的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-22
      • 1970-01-01
      • 2015-09-04
      • 2014-02-21
      • 1970-01-01
      • 2015-04-24
      相关资源
      最近更新 更多