我正在做一个 Grails 项目。在这我需要做两件事相关迁移脚本 如下 :
BootStrape.groovy
Mine DatabaseInit.groovy Script
现在我想在我的 中实现(或移动代码)这两个脚本。迁移脚本 .如何实现,请给我一些提示。
UPDATE DatabaseName.TableName1 SET ColumName = 2 WHERE ColumName IN (
SELECT ColumName FROM DatabaseName.TableName2 st WHERE st.ColumName = 'XYZ');
DELETE FROM DatabaseName.TableName2 WHERE ColumName NOT IN (2);
怎么写迁移脚本 为了完成这个任务。
最佳答案
建议您将 Bootstrap 文件保持在很小的范围内……内部没有太多代码,并且遵循您的好方法。
因此,您需要尝试创建一个 new migration scrip
file
即使您的DOMAIN
没有变化.因为,这将帮助您添加您的 sql 脚本,如果它们一旦成功创建,则以后不会在每次启动时执行它们。
grails命令行上的TODO:
grails dbm-create-changelog
grails prod dbm-generate-gorm-changelog --add changelog-1.0.whatevername.groovy
然后 ,
在
changelog-1.0.whatevername.groovy
中添加 sql 脚本文件如下:1.Using sql file like
//sqlFile( path: "${ path to SQL file relative to changelog.groovy }")
//Used in a changeset, it looks like this:
changeSet(author: "username", id: "1305821637932-1") { //id:is to be changed
sqlFile( path: "books.sql")
}
2.通过在里面写脚本来使用
changeSet(author: "username", id: "1305821637932-2") { //id : is to be changed
addColumn(tableName: "book") {
column(name: "flammable", type: "BIT") {
constraints(nullable: "false")
}
}
SQL("UPDATE DatabaseName.TableName1 SET ColumName = 2 WHERE ColumName IN (
SELECT ColumName FROM DatabaseName.TableName2 st WHERE st.ColumName = 'XYZ'))";
SQL("DELETE FROM DatabaseName.TableName2 WHERE ColumName NOT IN (2)");
}
编码快乐!!请引用 this和 this
关于grails - 为引导数据创建自定义迁移脚本并在 Grails 中执行一些与 SQL 相关的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22704964/