database - 用于删除或清除列中所有数据的 Liquibase 脚本

标签 database liquibase

在 liquibase 中是否有一种方法可以在不依赖于表内容的情况下使用 liquibase清除 CharSkill 列中的所有数据

由于我会将其部署到多个用户,因此内容可能会有所不同,但列是不变的。

我可以使用删除列然后添加相同的列,但我想知道这是否是最好的方法。

之前:

用户A的人物表:

+--------+----------+-----------+
| CharID | CharName | CharSkill |
+--------+----------+-----------+
|      1 | Mickey   | Run       |
|      2 | Minnie   | Jump      |
|      3 | Donald   | Kick      |
+--------+----------+-----------+

用户B的人物表:

+--------+----------+-----------+
| CharID | CharName | CharSkill |
+--------+----------+-----------+
|      1 | Goofy    | Punch     |
|      2 | Daisy    | Laugh     |
|      3 | Pluto    | Sing      |
|      4 | Stitch   | Crawl     |
+--------+----------+-----------+

之后:

用户A的人物表:

+--------+----------+-----------+
| CharID | CharName | CharSkill |
+--------+----------+-----------+
|      1 | Mickey   |           |
|      2 | Minnie   |           |
|      3 | Donald   |           |
+--------+----------+-----------+

用户B的人物表:

+--------+----------+-----------+
| CharID | CharName | CharSkill |
+--------+----------+-----------+
|      1 | Goofy    |           |
|      2 | Daisy    |           |
|      3 | Pluto    |           |
|      4 | Stitch   |           |
+--------+----------+-----------+

最佳答案

一个简单的 <update> 没有 where 子句应该这样做:

<changeSet author="loren" id="1">
    <update tableName="character">
        <column name="charskill"/>
    </update>
</changeSet>

或者只使用 <sql>标签:

<changeSet author="loren" id="1">
    <sql>update character set charskill=null</sql>
</changeSet>

关于database - 用于删除或清除列中所有数据的 Liquibase 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40041231/

相关文章:

mysql - 静态资源的访问控制

java - Spring中可变结构的SQL查询

java - 使用 EntityManagerFactory 获取刚刚添加的对象

ruby-on-rails - Heroku] 处理数据库

json - Liquibase 插入 JSON 数据

java - Hibernate - 重复键上的自动填充记录 ID

java - Liquibase 总是生成用于创建/删除索引的变更集

liquibase - 在表之间移动数据

java - 需要创建类型为 TIMESTAMP 的列但不更新现有行

sql-server - 为条件索引生成的 Liquibase 代码在 MS SQL Server 中给出错误