从 table 创建具有最大行值的序列 - Oracle with Liquibase

Create a sequence with maximum row value from a table - Oracle with Liquibase

我们正在使用 liquibase 在 Oracle 中创建和管理 table。我在从 table 创建 ID 列最大值的序列时遇到问题。在 liquibase 中,我尝试了以下方法。

<sql>Create Sequence id_sequence starts with (Select max(id) from tableName)</sql>

显示无效数字错误。我认为这是由于 select 查询没有 return 一个数字。我也尝试编号并得到以下相同的错误

<sql>Create Sequence id_sequence starts with TO_NUMBER((Select max(id) from tableName))</sql>

有没有办法用 liquibase 避免这个错误。我找不到基于 liquibase 的解决方案。所以我在这里问

我不知道 Liquibase,但是 - 当您用 Oracle 标签标记它时,它就不会那样工作。

Select MAX 值,然后在 CREATE SEQUENCE 中使用它。您将需要动态 SQL。这是一个例子:

SQL> declare
  2    l_max number;
  3  begin
  4    select max(deptno) into l_max from dept;
  5
  6    execute immediate 'create sequence id_sequence start with ' || l_max;
  7  end;
  8  /

PL/SQL procedure successfully completed.

SQL> select id_sequence.nextval from dual;

   NEXTVAL
----------
        40

SQL> select id_sequence.nextval from dual;

   NEXTVAL
----------
        41

SQL>