grails数据库迁移插件 - 如何有条件地插入行

时间:2016-04-12 14:39:33

标签: grails database-migration liquibase

我如何为grails数据库迁移插件编写一个changelog.groovy,如果一行ID不存在行,那么这些插件会将行插入表中?例如。

cool_stuff表有 id | some_other_id |

cool_stuff表填充了数据。鉴于一系列cool_stuff id,1 - 2000,我想:

  1. 遍历id,查询cool_stuff表以查看cool_stuff id和some_other_id = 2的组合是否存在
  2. 如果它不存在,请插入一行,其中包含cool_stuff id和some_other_id = 2

1 个答案:

答案 0 :(得分:0)

  1. 在" cool_stuff"中记录了这些内容。表已经。
  2. 你需要和#34; cool_stuff.id"的记录合并。和" some_other_id == 2"
  3. 所以,你想要跟随吗?

    table of "cool_stuff"
    
    FROM:
    id  | some_other_id
    ----|---------------
    1   | 2
    2   | 1
    3   | 2
    4   | 1
    
    TO:
    id  | some_other_id
    ----|---------------
    1   | 2
    2   | 1
    3   | 2
    4   | 1
    2   | 2
    4   | 2
    

    这是对的吗? 如果我这样做,我想做跟随。

    databaseChangeLog = {
        changeSet(author: "koji", id: "123456789") {
            grailsChange {
                change {
                    CoolStuff.list().findAll {
                        it.someOtherId != 2
                    }.each{
                        // save new instance
                        new CoolStuf(id: it.id, someOtherId:2).save(flush:true)
                    }
                }
            }
        }
    }