sql - 将 Oracle 序列重置为现有列中的下一个值的最佳方法?

标签 sql oracle oracle10g primary-key sequence

出于某种原因,过去人们插入数据时没有使用sequence.NEXTVAL。因此,当我使用sequence.NEXTVAL来填充表时,我遇到了PK违规,因为该数字已在表中使用。

如何更新下一个值以使其可用?现在,我只是一遍又一遍地插入,直到成功(INSERT INTO tbl (pk) VALUES (sequence.NEXTVAL)),然后同步下一个val。

最佳答案

您可以暂时增加缓存大小并执行一次虚拟选择,然后将缓存大小重置回 1。例如

ALTER SEQUENCE mysequence INCREMENT BY 100;

select mysequence.nextval from dual;

ALTER SEQUENCE mysequence INCREMENT BY 1;

关于sql - 将 Oracle 序列重置为现有列中的下一个值的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6099108/

相关文章:

plsql - PLS-00103 函数结束时出错

sql - "SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED"和 View

sql - 如何按行中两列中的较大值对数据集进行排序?

mysql - 在 mariaDB 中完全连接 2 个表

oracle - 如何授予用户对特定架构的权限?

oracle - Oracle 和 PostgreSQL 中不同的默认错误处理

java - 从 java 插入时出现 ORA-01858 Oracle 日期问题

SQL日期差异

php - 单个html表单插入到具有一对多关系的多个mysql表中

oracle - 在过程中创建 oracle sql 游标错误