Postgresql 博士后:理解主键序列

Postgresql 博士后:理解主键序列,postgresql,primary-key,Postgresql,Primary Key,我的数据库已不同步,这导致我出现以下问题: 抄袭如下 然而,我不太明白这里的一些事情:“你的表格id”是什么?我不知道在哪里可以找到这个。在挖掘的过程中,我发现了一张名为pg_序列的表格 在PGU目录中。与此有关吗??但是,我看不到任何方法将这些数据与我的表联系起来 -- Login to psql and run the following -- What is the result? SELECT MAX(id) FROM your_table; -- Then run... -- Th

我的数据库已不同步,这导致我出现以下问题: 抄袭如下

然而,我不太明白这里的一些事情:“你的表格id”是什么?我不知道在哪里可以找到这个。在挖掘的过程中,我发现了一张名为pg_序列的表格 在PGU目录中。与此有关吗??但是,我看不到任何方法将这些数据与我的表联系起来

-- Login to psql and run the following

-- What is the result?
SELECT MAX(id) FROM your_table;

-- Then run...
-- This should be higher than the last result.
SELECT nextval('your_table_id_seq');

-- If it's not higher... run this set the sequence last to your highest id. 
-- (wise to run a quick pg_dump first...)

BEGIN;
-- protect against concurrent inserts while you update the counter
LOCK TABLE your_table IN EXCLUSIVE MODE;
-- Update the sequence
SELECT setval('your_table_id_seq', COALESCE((SELECT MAX(id)+1 FROM your_table), 1), false);
COMMIT;

下面的查询给出了所有序列的名称

SELECT c.relname 
FROM pg_class c 
WHERE c.relkind = 'S';
通常,序列名为${table}\u id\u seq


我在这个问题中找到了答案:

在psql do\d表中查看与之关联的序列(如果有的话)。它应该是PK列的默认条目。这是否回答了您的问题?这个问题是重复的,标记/投票,不要回答。