【问题标题】:Rename a table used as reference in a another table重命名在另一个表中用作参考的表
【发布时间】:2014-10-04 08:01:19
【问题描述】:

我已经创建了两个 PostgreSQL 表表(代码来源于一个 Django 应用程序):

CREATE TABLE "app_book" (
    "id" serial NOT NULL PRIMARY KEY,
    "title" varchar(256)
);
CREATE TABLE "app_author" (
    "book_ptr_id" integer NOT NULL PRIMARY KEY REFERENCES "app_book" ("id") DEFERRABLE INITIALLY DEFERRED,
    "name" varchar(128) NOT NULL
);

我想将表 app_book 重命名为 app_item。以下行是否足够,还是我还必须更新app_author 中的参考?如果是这样,我该怎么做?

ALTER TABLE app_book RENAME TO app_item;

看着this page,我猜它没有。但是该页面没有说明如何更新参考。

【问题讨论】:

  • 你尝试的时候发生了什么?有没有用?
  • @jmcilhinney 我没有注意到任何特殊问题。但我不确定我是否测试过 Django 可以生成的所有类型的 SQL 查询...

标签: sql postgresql django-database


【解决方案1】:

自己看看http://sqlfiddle.com/#!15/0dd1f/5

您的链接中描述的问题仅指使用 Slony 时出现的问题。

如果您可以接受id 列“后面”的序列不反映名称更改的事实,那么一切都很好。如果它困扰您,您还需要重命名序列。请注意,pg_get_serial_sequence() 仍然有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 2011-10-02
    • 2012-05-11
    • 1970-01-01
    • 2014-11-06
    相关资源
    最近更新 更多