我目前正试图在liquibase 3.1.1中添加对表的评论
我想做的是ALTER TABLE t1 COMMENT = 'New table comment';
我在liquibase的文档中没有找到任何有关此案例的帮助,只有在列上添加注释的帮助。
我目前正在考虑创建一个customChange或者自己使用SQL语句进行更改,但是当我们要从MySQL迁移到Oracle时,我想避免这种解决方案(或者在最后的手段中使用它)。
是否有人为此问题找到了另一种解决方案?
答案 0 :(得分:0)
我通过在r
中创建一个带有<sql>
标记(或"sql"
密钥,如果您使用的是JSON)的自定义SQL语句来解决此问题(可以找到文档{{3 }})。
由于我使用的是PostgreSQL,因此向表中添加注释的SQL语法为changeSet
。以下是XML格式的整个COMMENT ON TABLE table_name IS 'text'
:
changeSet
答案 1 :(得分:0)
COMMENT ON TABLE
在这种情况下绝对有帮助。请参阅下面提供的示例,以及有关使用liqubase编辑表的一些提示和陷阱。
继续上面的响应,我想在这里关注标签<preConditions>
。在处理表以询问liqubase时,在您尝试编辑某个表时该表是否存在至关重要。这是这种行为的一些示例:
<changeSet id="your_table_id" author="author_name" dbms="postgresql">
<preConditions onFail="MARK_RAN">
<tableExists tableName="table_name" schemaName="schema_name"/>
</preConditions>
<sql>
COMMENT ON TABLE schema_name.table_name is 'YOUR_COMMENT_ON_TABLE';
</sql>
</changeSet>
在处理列(编辑,添加,删除)的情况下,还应考虑以类似的方式询问liqubase是否存在特定列:
<preConditions onFail="MARK_RAN">
<not>
<columnExists tableName="table_name" schemaName="schema_name"
columnName="column_name"/>
</not>
</preConditions>
<sql>
...
</sql>
上面的示例检查表中是否不存在列,然后执行一些SQL脚本。