【问题标题】:Resetting sequence in PostgreSQLPostgreSQL 中的重置序列
【发布时间】:2020-01-27 18:21:17
【问题描述】:

设置:

我确实在 PostgreSQL 中创建了一个表,其中有一列 id 串行主键。 查看 pgAdmin 中列的属性,我可以看到:

数据类型:整数

默认值: nextval('items_id_seq'::regclass)

(所以如果我没记错的话,我确实是使用“序列”关键字创建的。)

现在在我的后端代码中,我使用的方法是:jpaRepository.deleteAllInBatch(),它会“截断”我的整个表。

问题

当我再次向表中添加记录时,我可以看到以下记录的 id 从我在表中的最后一条记录的 id 继续。

问题:

有没有办法在执行 jpaRepository.deleteAllInBatch() 时重新初始化 id-serial 以便记录再次以 id = 0 开头?

【问题讨论】:

  • 你可以重设一个序列,但何必呢?您不应该关心实际值,只关心它们是主键。
  • 我很烦恼,因为首先我不使用这个主键作为外键,所以重置序列不应该产生问题。而且我有很多次删除 1000 多条记录并再次添加 1000 多条记录。恐怕不是今年,但也许明年我会达到序列整数限制

标签: java spring-boot jpa


【解决方案1】:

这可能对你有帮助

ALTER SEQUENCE seq RESTART WITH 1;
UPDATE t SET idcolumn=nextval('seq');

更多详情

How to reset sequence in postgres and fill id column with new data?

【讨论】:

  • 是的,我想我每年都会自己手动完成。谢谢
猜你喜欢
  • 2014-10-22
  • 1970-01-01
  • 2015-10-04
  • 1970-01-01
  • 2016-03-30
  • 2012-09-16
  • 2020-06-01
  • 2015-06-12
  • 2014-01-03
相关资源
最近更新 更多