2016-04-12 2 views
0

Wie würde ich eine changelog.groovy für die Grails-Datenbank-Migration-Plugin schreiben, die Zeilen in eine Tabelle einfügen würde, wenn eine Zeile für einen Bereich von IDs noch nicht existiert? Beispielsweise.Grils Datenbank Migration Plugin - Wie bedingte Zeilen einfügen

cool_stuff Tabelle hat id | some_other_id |

Die Tabelle cool_stuff wird mit Daten gefüllt. Bei einer Reihe von cool_stuff ids, 1-2000, möchte ich mag:

  1. Iterate durch die IDs, die cool_stuff Tabelle abzufragen, um zu sehen, ob die Kombination von cool_stuff id und some_other_id = 2
  2. existiert Wenn es doesn ‚t vorhanden sind, legen eine Zeile mit der cool_stuff id und some_other_id = 2
+0

Konnte dies in changelog.xml statt changelog.groovy getan werden? – ddelponte

Antwort

0
  1. Threre sind recoreds auf "cool_stuff" Tabelle bereits.
  2. Sie benötigen conbination eines Datensatzes, dass "cool_stuff.id" und "some_other_id == 2"

so möchten Sie wie folgt?

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 

Ist das richtig ??
Ich würde gerne Folgendes tun, wenn ich das tue.

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) 
       } 
      } 
     } 
    } 
} 
Verwandte Themen