2014-10-04 47 views
0

我已经创建了两个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中的REFERENCES?如果是这样,我该怎么做?

ALTER TABLE app_book RENAME TO app_item; 

看着this page,我猜测它没有。但该页面并未解释如何更新参考。

+2

当你尝试时发生了什么?它工作与否? – jmcilhinney 2014-10-04 08:03:08

+0

@jmcilhinney我没有注意到任何特别的问题。但是我不确定我是否已经测试过Django可以生成的所有类型的SQL查询...... – mimo 2014-10-04 20:48:41

回答

1

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

在您的链接中所描述的问题,使用Slony聚时仅指问题。

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

相关问题