2014-10-04 48 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()仍然有效。