Sql 将起始序列值设置为最大值(id)
我需要在OracleDB中更改sequnce名称,但我不能使用rename(不需要执行epxlain)。我正在尝试删除它并创建一个具有不同名称的新的。但我需要将序列值设置为max(id)+1。我正在尝试以下命令:Sql 将起始序列值设置为最大值(id),sql,oracle,Sql,Oracle,我需要在OracleDB中更改sequnce名称,但我不能使用rename(不需要执行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
( 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:无效数字您需要动态SQL
DECLARE
seq_id INTEGER;
BEGIN
SELECT MAX (id) INTO seq_id FROM test_table;
EXECUTE IMMEDIATE
'CREATE SEQUENCE seq_test
START WITH '
|| seq_id
|| ' INCREMENT BY 1 MINVALUE 100000 MAXVALUE 9223372036854775807 NOCACHE';
END;
/
9223372036854775807
似乎是一个非常具体的最大值。另外,nocache
通常不是一个好主意-您确定要禁用缓存吗?如果频繁使用序列,会影响性能。这不是我的事,我必须保持原样。关于nocache
,我经常看到不知道它做什么的人从其他脚本复制粘贴它,因此我想再次检查它是否真的需要。对于其他值,只指定非默认值更为明确,例如,create sequence seq_test start with xxx minvalue yyy
。