如何在PostgreSQL中使用表绑定所有序列

时间:2012-11-09 13:41:16

标签: database django postgresql sequences

我最近在我的Django应用程序中从MySQL切换到PostgreSQL,我需要在max上设置所有序列的最后一个值。对应的表和列的数量。如何获得与表相关的所有序列?到目前为止,我正在做一些像:

SELECT sequence_name FROM information_schema.sequences 
WHERE sequence_name LIKE 'table_name%';

但我不喜欢这种方法,主要是因为我必须另外清理结果。是否有一些ID将表连接到它们的序列。

现在我无法将任何对象添加到我的数据库中,因为Postgre“自动增量”从1开始运行,新对象的PK与现有记录冲突。

注意:我的django应用程序非常大,我使用了几个额外的包,因此命名约定不一致(表名有/不带app pefix,PK列就像'tableid'或'table_id'只是' id'等等)

3 个答案:

答案 0 :(得分:9)

假设您没有做任何不寻常的事情,请尝试以下两个查询。

SELECT * FROM information_schema.sequences ;
SELECT * FROM information_schema.columns WHERE column_default LIKE 'nextval%';

那应该告诉你你需要知道什么。我可能只是将序列名称从column_default字段中删除。

答案 1 :(得分:2)

尝试:

python manage.py sqlsequencereset <appname>

并将其提供给psql cli

HTH

答案 2 :(得分:0)

使用它来获取序列名称和计数。

SELECT sequence_name,start_value from information_schema.sequences;