我对liquibase脚本非常不熟悉。
示例:
tableA:
+----+---------------------+-----------+-----------+
| pk | name | someValue | relatedpk |
+----+---------------------+-----------+-----------+
| 1 | ElementA | 1 | NULL |
| 2 | ElementA | 1 | 1 |
| 3 | ElementB | NULL | NULL |
| 4 | ElementB | NULL | 3 |
| 5 | ElementC | 3 | NULL |
| 6 | ElementC | 3 | 5 |
| 7 | ElementD | NULL | NULL |
| 8 | ElementD | NULL | 7 |
| 9 | ElementE | NULL | NULL |
| 10 | ElementE | NULL | 9 |
+----+---------------------+-----------+-----------+
tableB:
+----+------------------------------+-----------+
| pk | name | tableA_fk |
+----+------------------------------+-----------+
| 1 | Value1 | 2 |
| 2 | Value2 | 3 |
| 3 | Value3 | 9 |
+----+------------------------------+-----------+
在这个例子中,我想从tableA中删除带有pk = 7,8的ElementD。
原因:
无法删除ElementA,因为
someValue != null
无法删除ElementB,因为
tableA_fk = 3 for element Value2 in tableB
无法删除ElementC,因为
someValue != null
可以删除ElementD,因为
someValue=NULL
No Element from tableB point to one of this two elements from tableA.
无法删除ElementE,因为
tableA_fk = 9 for element Value3 in tableB
是否有可能在liquibase脚本中实现类似的东西?
就像那样
<changeSet id="remove-elements">
<delete tableName="tableA">
<where>ConditionToRemoveTheCorrectELements</where>
</delete>
</changeSet>
答案 0 :(得分:0)
我建议您只编写所需的SQL并使用<delete tableName>
或<sql>
更改标记,而不是尝试使用<sqlFile>
标记。