如何使用 liquibase 重命名序列?

How can I rename a sequence with liquibase?

我的数据库中有一个序列,它是通过 Liquibase 生成的。在重构过程中,我们决定不喜欢我们给它起的名字,我们想重命名它,保留它当前存在的所有数据。

似乎可以 alter a sequence,但我没有看到有关如何重命名序列的任何信息。有没有办法做到这一点,或者一个合理的解决方法?

(如果重要的话,我正在使用 Oracle SQL)

目前没有用于重命名序列的内置重构。如果您的数据库引擎支持它,您可以使用 <sql><sqlFile> 更改执行任何支持的方法。

您说您使用的是 Oracle SQL。 RENAME 语句允许重命名序列。所以你的 Liquibase 脚本看起来像这样:

<sql>RENAME old_sequence_name TO new_sequence_name</sql>

虽然没有记录,但 Liquibase 支持此重构。不确定此更改是在哪个版本中实施的,但 class supporting the feature was commited on 30 Jan 2014. What's interesting though, is that the original issue 仍未解决。

无论如何,重构应该只适用于 OraclePostgres。我已经在 Oracle 上使用 Liquibase 3.4.1:

对其进行了测试
databaseChangeLog:
  - changeSet:
      id: change_set_id
      author: me
      dbms: oracle
      changes:
        - renameSequence:
            oldSequenceName: old_name_seq
            newSequenceName: new_name_seq

上面的重构是 YAML 格式,但你很容易猜到它的 XML 对应部分。

在 Oracle 上,这会生成以下语句:

RENAME old_name_seq TO new_name_seq;

2 个其他支持的参数是 catalogNameschemaName