Postgresql 博士后:理解主键序列
我的数据库已不同步,这导致我出现以下问题: 抄袭如下 然而,我不太明白这里的一些事情:“你的表格id”是什么?我不知道在哪里可以找到这个。在挖掘的过程中,我发现了一张名为pg_序列的表格 在PGU目录中。与此有关吗??但是,我看不到任何方法将这些数据与我的表联系起来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
-- 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列的默认条目。这是否回答了您的问题?这个问题是重复的,标记/投票,不要回答。