pgsql自增序列
1.从1开始自增。插入数据无需插入idid即可自增步长默认是1也可设置步长。2.如有业务需求需要手动指定id则插入数据后必须设置下次自增id的开始值如果不设置则旧的自增id游标没有更新那么在插入数据自增id时就会发生主键冲突。可通过如下语句查找并设置1查找与表关联的序列名称SELECT pg_get_serial_sequence(你的表名, 自增列名);2查看当前序列值最后一次 nextval 返回的值常用【实际值】-- 将 sequence_name 替换为上面查到的结果SELECT last_value FROM sequence_name;3查找表中目前最大id值【目标值】SELECT MAX(自增列名) FROM 你的表名;4使用 setval 函数将序列值设置为当前表中最大 ID 的值-- 将序列值设置为当前最大 ID-- 这样下一次调用 nextval() 时会自动返回 最大值 1SELECT setval(snsj_server_cwfx.finance_audit_data_result_id_seq, (SELECT MAX(id) FROM snsj_server_cwfx.finance_audit_data_result));关键细节详解setval 的第二个参数 is_calledsetval 函数其实有三个参数setval(sequence_name, next_value, is_called)。其中 is_called 是一个布尔值决定了下一次 nextval 的行为setval(seq, 100, true) (默认值) 表示序列已经“被调用”过一次当前值是 100。下一次调用 nextval 将返回 101。 $\rightarrow$ 这就是我们同步最大值时需要的行为。setval(seq, 100, false) 表示序列虽然被设为 100但尚未被调用。下一次调用 nextval 将返回 100。