2016-04-12 25 views
0

Bir satırlar bir dizi kimlik için zaten yoksa, bir tabloya satırlar yerleştirecek grants veritabanı geçiş eklentisi için bir changelog.groovy nasıl yazabilirim? Örneğin.grails veritabanı geçişi eklentisi - koşullu olarak satırları ekleme

cool_stuff tablosu var kimlik | some_other_id |

Cool_stuff tablosu verilerle doldurulur. cool_stuff kimlikleri bir dizi göz önüne alındığında, 1-2000, ben istiyorum:

  1. Yineleyin kimlikleri aracılığıyla, cool_stuff id kombinasyonu ve some_other_id = 2
  2. varsa o değil ise görmek cool_stuff tablo sorgulama 't, mevcut cool_stuff kimliği ve some_other_id bir satır eklemek = 2
+0

Bu, changelog.groovy yerine changelog.xml dosyasında yapılabilir mi? – ddelponte

cevap

0
  1. önce "cool_stuff" masada recoreds Threre bulunmaktadır.
  2. Sen "cool_stuff.id" ve "some_other_id == 2"

böylece, aşağıdaki gibi istiyorsun ki kaydın conbination gerek?

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 

Bu doğru mu?
Bunu yaparsam takip etmek isterim.

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) 
       } 
      } 
     } 
    } 
} 
İlgili konular