如何在 PostgreSQL 中重置自动生成的主键
How to reset the auto generated primary key in PostgreSQL
我的 class table topics
如下。主键是自动生成的序列号。在测试时,我从 table 中删除了行,并试图再次重新插入它们。 UUID 未重置。
class Topics(db.Model):
""" User Model for different topics """
__tablename__ = 'topics'
uuid = db.Column(db.Integer, primary_key=True)
topics_name = db.Column(db.String(256),index=True)
def __repr__(self):
return '<Post %r>' % self.topics_name
我尝试了以下命令来重置密钥
ALTER SEQUENCE topics_uuid_seq RESTART WITH 1;
没用。
我将不胜感激任何形式的建议!
如果确实是 serial
ID,您可以重置拥有的 SEQUENCE
:
SELECT setval(pg_get_serial_sequence('topics', 'uuid'), max(uuid)) FROM topics;
参见:
How to reset postgres' primary key sequence when it falls out of sync?
但是为什么名字会是 uuid
? UUID 不是 integer
数字,也不是 serial
。此外,当您写下时,还不完全清楚出了什么问题:
The UUID is not getting reset.
关于ALTER SEQUENCE ... RESTART
:
- Postgres manually alter sequence
我的 class table topics
如下。主键是自动生成的序列号。在测试时,我从 table 中删除了行,并试图再次重新插入它们。 UUID 未重置。
class Topics(db.Model):
""" User Model for different topics """
__tablename__ = 'topics'
uuid = db.Column(db.Integer, primary_key=True)
topics_name = db.Column(db.String(256),index=True)
def __repr__(self):
return '<Post %r>' % self.topics_name
我尝试了以下命令来重置密钥
ALTER SEQUENCE topics_uuid_seq RESTART WITH 1;
没用。
我将不胜感激任何形式的建议!
如果确实是 serial
ID,您可以重置拥有的 SEQUENCE
:
SELECT setval(pg_get_serial_sequence('topics', 'uuid'), max(uuid)) FROM topics;
参见:
How to reset postgres' primary key sequence when it falls out of sync?
但是为什么名字会是 uuid
? UUID 不是 integer
数字,也不是 serial
。此外,当您写下时,还不完全清楚出了什么问题:
The UUID is not getting reset.
关于ALTER SEQUENCE ... RESTART
:
- Postgres manually alter sequence