如何用liquibase重命名序列?

时间:2016-03-11 17:32:32

标签: liquibase

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

alter a sequence似乎有可能,但我没有看到有关如何重命名序列的任何内容。有办法做到这一点,还是合理的解决方法?

(如果重要,我使用的是Oracle SQL)

2 个答案:

答案 0 :(得分:6)

虽然没有记录,但Liquibase支持这种重构。不确定此更改的实施版本,但class supporting the feature已于2014年1月30日提交。但有趣的是,original issue尚未解决。

无论如何,重构应该仅适用于 Oracle Postgres 。我已使用 Liquibase 3.4.1 Oracle 上对其进行了测试:

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

答案 1 :(得分:5)

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

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

<sql>RENAME old_sequence_name TO new_sequence_name</sql>