【发布时间】:2018-02-07 17:25:20
【问题描述】:
我需要更改 Oracle DB 中的序列名称,但我不能使用重命名(为什么不需要做 epxlain)。我正在尝试删除它并创建一个具有不同名称的新名称。但我需要将序列值设置为 max(id)+1。我正在尝试这些命令:
CREATE SEQUENCE seq_test START WITH
( SELECT MAX(id) FROM test_table
)
INCREMENT BY 1 MINVALUE 100000 MAXVALUE 9223372036854775807 NOCACHE;
CREATE SEQUENCE seq_test START WITH
to_number( SELECT MAX(id) FROM test_table
)
INCREMENT BY 1 MINVALUE 100000 MAXVALUE 9223372036854775807 NOCACHE;
对于这两种情况,我都得到了 SQL 错误:ORA-01722:无效号码
【问题讨论】:
-
9223372036854775807似乎是一个非常具体的最大值。nocache通常也不是一个好主意 - 您确定要禁用缓存吗?如果频繁使用该序列会影响性能。 -
这不取决于我,我必须保持原样。
-
关于
nocache,我经常看到它被不知道它做什么的人从其他脚本复制和粘贴,因此我想仔细检查它是否真的需要。对于其他值,只指定非默认值会更清楚,例如create sequence seq_test start with xxx minvalue yyy.