Grails 数据库迁移插件 - sql 与 'bundled changes'

Grails db-migration plugin - sql vs 'bundled changes'

背景: 我有一个用 Grails 编写的 Web 应用程序后端,它与 MySQL 数据库通信。我正在使用 Grails 数据库迁移插件来控制数据库结构,updateOnStart 设置为 true(我很少使用插件的命令行界面)。

问题: 在变更集中使用 SQL 查询和 'bundled changes' 之间有什么实际区别吗?

示例: 有什么理由我应该例如喜欢:

addColumn(tableName: 'table_x'){
    column(name: 'new_column', type: 'int', defaultValue: 0){
        constraints(nullable: 'false')
    }
}

超过

sql(sql: 'ALTER TABLE table_x ADD COLUMN new_column INT NOT NULL DEFAULT 0;')

?或者这两者完全可以互换?

这取决于 SQL 你的作者。只要您的写入可移植 SQL 就没关系,只有当您针对不支持您编写的 SQL 的不同类型的数据库时才重要。