如何在Rails中使用迁移创建mysql触发器?

Sri*_*.V. 17 activerecord triggers ruby-on-rails

有没有办法使用Activerecord迁移创建mysql触发器?有没有人参与其中分享你的经验.谢谢

Dam*_*IEU 23

没有魔术方法允许您在不编写任何SQL的情况下创建触发器.
但是您可以在任何迁移中执行原始sql.

def self.up
    execute <<-SQL
        CREATE TRIGGER my_trigger ...
    SQL
end
Run Code Online (Sandbox Code Playgroud)

然后,您只需要根据迁移情况适当地编写触发器或更新它.

编辑:我刚刚找到rails_on_pg,它为迁移提供了一些帮助.
它不适用于除PgSQL之外的任何其他数据库服务器.但是如果你要写一些MySQL触发帮助器,它可能是一个很好的领导.


Jon*_*sen 11

有一个名为hairtrigger的宝石,它使这更容易和更便携(mysql/sqlite/postgres).它允许您以与数据库无关的方式在迁移中创建触发器,或者甚至可以更好地在模型中声明它们,然后运行rake db:generate_trigger_migration来为您执行此操作.

  • gem已更新,以支持最新版本的rails (5认同)