【问题标题】:how do i create same tables in different schemas using liquibase我如何使用 liquibase 在不同的模式中创建相同的表
【发布时间】:2021-03-12 14:49:26
【问题描述】:

想象一下,我有一个表“一些表”,我想在多个模式中创建它。名为“create-some-table.yaml”的文件

 databaseChangeLog:
      - changeSet:
          id: create-some-table
          runOnChange: true
          author: gimazov (generated)
          preConditions:
            - onFail: MARK_RAN
              not:
                tableExists:
                  tableName: some-table
          changes:
            - createTable:
                columns:
                  - column:
                      autoIncrement: true
                      constraints:
                        nullable: false
                        primaryKey: true
                        primaryKeyName: some-table_pkey
                      name: id
                      type: BIGINT
                tableName: some-table
                schemaName: ${schema}

然后有一个 yaml 文件 'schema1.yaml' 包含上一个文件并设置架构

 databaseChangeLog:
  - property:
      name: schema
      value: schema1
  - include:
      file: classpath:/db/changelog/create-some-table.yaml

然后与上面的文件相同,只是命名为'schema2.yaml'并具有相应的架构名称

最后一件事是非常简单的 changelog-master

databaseChangeLog:
    - include:
        file: classpath:/db/changelog/schema1.yaml
    - include:
        file: classpath:/db/changelog/schema2.yaml

有什么办法可以做类似的事情吗,谢谢:)

【问题讨论】:

标签: liquibase


【解决方案1】:

拥有这种结构怎么样?

master.changelog.yaml
  schemas
    schema1.changelog.yaml
    schema2.changelog.yaml
  templates
    templates.changelog.yaml
    table1.template.yaml
    table2.template.yaml
    ...

所以在master.changelog.yaml 中,您将包括schema1.changelog.yamlschema2.changelog.yaml。在它们中,您将包含templates.changelog.yaml 并设置模式的参数。然后在templates.changelog.yaml 中,您将包含所有模式通用的所有模板。我认为这应该可行,但是我没有使用liquibase 格式的yaml 的经验。对于不应该出现问题的 xml。

【讨论】:

    猜你喜欢
    • 2021-12-23
    • 2021-02-13
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多