2015-04-14 20 views
3

我有一個名爲pivot_device_user的表,它的ID爲not null default nextval('pivot_device_user_id_seq'::regclass)在Postgres中重命名爲nextval('...')

然後我決定將我的表重命名爲pivot_box_user,但nextval(...)仍然是nextval('pivot_device_user_id_seq'::regclass)。我想將它更改爲nextval('pivot_box_user_id_seq'::regclass)。我該怎麼做呢?

+0

沒有,因爲該序列實際上是一種許可這是給用戶的。所以目前postgres返回一個錯誤,說用戶沒有正確的權限。 – Kousha

回答

2

首先,你必須明白什麼是serial真的是:

欄默認是不實際存儲爲文本文字。你看到的只是人類可讀的文本表示:nextval('pivot_device_user_id_seq'::regclass)

'pivot_device_user_id_seq'::regclass被解析爲內部的OIDregclass要準確) - 底層序列的OID - 這就是我們的實際存儲(早期綁定)。如果您重命名序列,則其OID保持不變。因此,所有你需要做的是rename the sequence

ALTER SEQUENCE pivot_device_user_id_seq RENAME TO pivot_box_user_id_seq; 

檢查成功有:

SELECT pg_get_serial_sequence('pivot_box_user', 'id'); 

相關: