如何找到主键序列和主键的最大值

时间:2018-09-11 20:47:14

标签: sql postgresql access-vba

我知道这个问题有点愚蠢,我需要运行这些查询以查看值是否不同步,但出现类似“关系不存在”的错误:

 SELECT MAX(the_primary_key) FROM the_table;   
 SELECT nextval('the_primary_key_sequence');

我有一个名为“ Audit”的表,其主键列为“ auditID”。当我运行第一个查询时,我得到了结果:

SELECT MAX('auditID') FROM "Audit";
   max
---------
 auditID
 (1 row)

,但最大值应大于10000。

然后,我运行第二个查询,并收到错误消息“关系“ the_primary_key_sequence”或“ Audit_auditID_seq”不存在”。 如何检查主键序列是否存在?

错误:

select setval('Audit_auditID_seq', 171832, true);
ERROR:  relation "audit_auditid_seq" does not exist
LINE 1: select setval('Audit_auditID_seq', 171832, true);

2 个答案:

答案 0 :(得分:1)

我想出了所有问题,在这种情况下,引号真的很敏感;

 SELECT MAX("auditID") FROM "Audit"; 
   max
--------
 171832
 (1 row)

 SELECT nextval('"Audit_auditID_seq"');
 ----
 139801

最后使值相同:

 select setval('"Audit_auditID_seq"', 171832, true);

如果需要找出序列,请使用

 \d "table_name";

答案 1 :(得分:0)

如果您不知道序列名称,但您的列是 public function post_quote(Request $request){ $rf_id = $request->rfq_id; $validateData = $request->validate([ 'min_price'.$rf_id => 'required' ]); dd($request); (或现代 Postgres 版本中的 serial),您可以使用:

identity

Online example