上篇文章中具体了介绍了一下changelog 文件的应用,本篇文章将具体说一下 changeSet 变更集 中的细节,以及通常的应用形式

1.变更集分类

changeSet 分为 6类:

  • add
  • create
  • drop
  • rename
  • sql
  • other

官网文档:https://docsstage.liquibase.c...,每一个标签都有其必须的参数,应用时依据状况自行设定即可

用法均为如下格局:

<changeSet>    <xxxx /></changeSet>

2.1 add

标签形容
addAutoIncrement将一个已存在的列转换为自增
addColunm减少列
addDefaultValue对已存在的列减少默认值
addForeignKeyConstraint对已存在的列减少外键束缚
addLookupTable创立外键关联的表
addNotNullConstraint对已存在的列减少非空束缚
addPrimaryKey对已存在的列减少主键束缚
ddUniqueConstraint对已存在的列减少主键束缚

2.2 create

标签形容
createIndex创立索引
createProcedure创立存储过程
createSequence创立序列
createTable创立表
createView创立视图

2.3 drop

标签形容
dropAllForeignKeyConstraints删除全副的外键束缚
dropColumn删除列
dropDefaultValue删除默认值设置
dropForeignKeyConstraint删除某一列的外键束缚
dropNotNullConstraint删除非空束缚
dropIndex删除索引
dropSequence删除束缚
dropProcedure删除存储过程
dropPrimaryKey删除主键
dropTable删除表
dropUniqueConstraint删除唯一性束缚
dropView删除视图

2.4 rename

标签形容
renameColumn重命名列
renameSequence重命名序列
renameTable重命名表
renameView重命名视图

2.5 sql

标签形容
sql原生SQL
sqlFile引入 SQL 文件

2.6 Other

标签形容标签形容
alterSequence批改序列customChange自定义change类型,须要本人实现liquibase.change.custom.CustomSqlChange、liquibase.change.custom.CustomTaskChange接口
delete删除数据empty空操作
executeCommand执行系统命令,如 mysqldumpinsert插入数据
loadData加载 csv 文件到已存在的表中loadUpdateData加载 csv 文件到已存在的表中,然而会判断是否存在,存在更新,否则新增
mergeColumns将两列值合并在一起,存入新列中modifyDataType批改列数据类型
output记录一条音讯并继续执行setColumnRemarks列上增加备注
setTableRemarks表上增加备注stop通过音讯进行 Liquibase
tagDatabase将标签利用于数据库以供将来回滚update更新数据

2.罕用变更集

下面这么多的标签,置信曾经将很多人的眼睛看花了,不要紧,将它们全副列举出次要还是想大家可能对 Liquibase 有一个更全面的了解,遇到某些场景时可能对症检索。

接下来我会介绍几个罕用的标签,根本可能笼罩大多数场景。

2.1 SQL

最罕用以及最棘手的就是 sql 标签,开发人员像应用 Mybatis 一样,写原生SQL,然而如果SQL比较复杂,可读性就不怎么好

<changeSet id="xxxx" author="jiaotd" labels="init" >        <sql>            USE `db_xxx`;              insert into table_t values(1,1,1);        </sql> </changeSet>

2.2 sqlFile

sqlFIle 就是将下面 SQL 中的语句独自应用文件存储,在 sqlFIle 引入。

这样做的益处是 changelog 文件简略、整洁、可读性高、易于保护。

 <changeSet id="xxxx" author="jiaotd" labels="init" >    <sqlFile path="update/xxxx.sql" relativeToChangelogFile="true"/> </changeSet>

2.3 loadData

loadData 通常用于导入数据,个别咱们用于系统升级时导入大量的数据。

<changeSet  author="jiaotd"  id="loadData-xxx">      <loadData commentLineStartsWith="//"              encoding="UTF-8"              file="example/users.csv"              quotchar="'"              relativeToChangelogFile="true"              schemaName="public"              separator=";"              tableName="person"              usePreparedStatements="true">          <column  header="header1"                  name="id"                  type="NUMERIC"/>          <column  index="3"                  name="name"                  type="BOOLEAN"/>      </loadData>  </changeSet>