Dav*_*vid 66 postgresql primary-key reset
有没有办法将PostgreSQL表的主键重置为在填充的表上再次从1开始?
现在它正在产生1000000及以上的数字.我想要全部重置并从1开始,保持我现有的所有数据不变.
Paw*_*cki 152
重置序列以使用数字1重新开始的最佳方法是执行以下操作:
ALTER SEQUENCE <tablename>_<id>_seq RESTART WITH 1
Run Code Online (Sandbox Code Playgroud)
因此,例如对于users表格,它将是:
ALTER SEQUENCE users_id_seq RESTART WITH 1
Run Code Online (Sandbox Code Playgroud)
Vin*_*vic 32
自动增量的主键(即具有数据类型的列serial primary key)与序列相关联.您可以使用该setval(<seqname>, <next_value>)函数为任何序列设置下一个值.请注意,要实际执行该功能,您需要使用SELECT,如下所示:SELECT setval(<seqname>, <next_value>)
使用serial时自动创建序列的名称 <table>_<column>_seq
小智 5
@bluish实际上使用自动递增主键插入新记录,就像这样显式使用序列一样:
INSERT INTO MyTable (id, col1, ...) VALUES (MySeq.nextval(), val1, ...)
Run Code Online (Sandbox Code Playgroud)
因此,如果您希望第一个 id 为 1,则必须将序列设置为 0。但它超出了范围,因此您必须使用 ALTER SEQUECE 语句。因此,如果您的表格菜单中有一个名为 number 的序列字段,例如:
ALTER SEQUENCE menu_number_seq RESTART
Run Code Online (Sandbox Code Playgroud)
将使工作变得完美。
| 归档时间: |
|
| 查看次数: |
55927 次 |
| 最近记录: |