将起始序列值设置为max(id)

时间:2018-02-07 09:15:45

标签: sql oracle

我需要在Oracle DB中更改sequnce名称,但我不能使用重命名(不需要为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:无效的数字

1 个答案:

答案 0 :(得分:2)

你需要动态的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;
/