相关疑难解决方法(0)

在 PostgreSQL 中压缩序列

id serial PRIMARY KEY在 PostgreSQL 表中有一个列。id因为我删除了相应的行,所以缺少许多s。

现在我想通过重新启动序列并以保留id原始id顺序的方式重新分配s来“压缩”表。是否可以?

例子:

  • 现在:

 id | data  
----+-------
  1 | hello
  2 | world
  4 | foo
  5 | bar
Run Code Online (Sandbox Code Playgroud)
  • 后:

 id | data  
----+-------
  1 | hello
  2 | world
  3 | foo
  4 | bar
Run Code Online (Sandbox Code Playgroud)

我尝试了 StackOverflow answer 中建议的内容,但没有奏效:

# alter sequence t_id_seq restart;
ALTER SEQUENCE
# update t set id=default;
ERROR:  duplicate key value violates unique constraint t_pkey
DETAIL:  Key …
Run Code Online (Sandbox Code Playgroud)

postgresql primary-key sequence gaps-and-islands

9
推荐指数
1
解决办法
2590
查看次数

关键与差距的挑战?

我有一个触发器错误,导致在 x86_64-unknown-linux-gnu 上的 PostgreSQL 9.4.3 中出现错误,由 gcc (Debian 4.9.2-10) 4.9.2, 64 位编译。每次出错期间,SERIAL 的主键都会增加。修复错误后,表格测量结果

 measurement_id | measurement_size_in_bytes |             time              
----------------+---------------------------+-------------------------------
              1 |                     77777 | 2015-07-14 18:29:56.858703+03
              2 |                       888 | 2015-07-14 18:29:56.882552+03
              3 |                       888 | 2015-07-14 18:30:15.505957+03
              4 |                       888 | 2015-07-14 18:41:01.878106+03
             39 |                     77777 | 2015-07-15 12:11:21.21391+03
             40 |                     77777 | 2015-07-15 12:11:59.551973+03
             41 |                     77777 | 2015-07-15 12:12:05.48982+03
             42 |                     77777 | 2015-07-15 12:13:02.402053+03
             43 |                     77777 | 2015-07-15 12:13:02.419412+03
             44 |                       888 | 2015-07-15 …
Run Code Online (Sandbox Code Playgroud)

postgresql serialization errors

4
推荐指数
1
解决办法
761
查看次数