¿Hay alguna forma de crear activadores de mysql mediante migraciones de Activerecord? Alguien ha trabajado en eso, comparte tu experiencia. Gracias¿Cómo crear disparadores mysql usando migraciones en Rails?
Respuesta
No hay un método mágico que le permita crear un disparador sin escribir ningún SQL.
Pero puede ejecutar sql sin procesar dentro de cualquier migración.
def self.up
execute <<-SQL
CREATE TRIGGER my_trigger ...
SQL
end
Luego solo tiene que escribir apropiadamente su activador o actualizarlo dependiendo de la migración.
Editar: Acabo de encontrar rails_on_pg, que proporciona algunos ayudantes para las migraciones.
No funciona con ningún otro servidor de base de datos que PgSQL. Pero puede ser una buena pista si está dispuesto a escribir algún ayudante desencadenante de MySQL.
hay una gema llamada hairtrigger que hace esto un poco más fácil y portátil (mysql/sqlite/postgres). te permite crear desencadenantes en tus migraciones de forma independiente de DB, o incluso mejor puedes declararlos en tus modelos y luego ejecutar rake db: generate_trigger_migration para que lo haga por ti.
Esta joya está desactualizada - es compatible con Rails 2.3 - Rails 3.0.x. Pero la idea es genial. –
la gema se ha actualizado para admitir las últimas versiones de rieles –
Jon su joya es fantástica. ¿Conoces alguno para generar índices pg? – zabumba
pensó que podría ayudar a alguien ...
Si ponemos SQL personalizado que puede no funcionar en el entorno de desarrollo, si estamos utilizando SQLite3 y nuestro comando migrate fallaría en sqlite:
rake db:migrate
Me pareció más útil crear trigger sql en un archivo separado en db/scripts y ejecutarlos en mysql cli. De esa manera podría volver a ejecutarlos según la necesidad cuando el gatillo cambie.
- 1. Son disparadores MySQL asíncronos
- 2. ¿Cómo puedo encontrar todos los disparadores db en MYSQL?
- 3. Generar migraciones fuera de Rails
- 4. Cómo crear un histograma usando MySQL
- 5. ¿Cómo almacenar texto largo en MySql DB usando Rails?
- 6. ¿Debería aplanar las migraciones de Rails?
- 7. Crear una nueva aplicación Ruby on Rails usando MySQL en lugar de SQLite
- 8. Añadir filas en migraciones
- 9. Disparadores en XAML
- 10. Disparadores SQLite en Android?
- 11. Aplicación Rails usando Mysql cómo implementar con heroku?
- 12. Crear vista de MySQL usando UNION
- 13. Convenciones de nomenclatura para las migraciones de Rails
- 14. TSQL - Desactivar disparadores en transacciones
- 15. ¿Cómo crear una columna virtual usando MySQL SELECT?
- 16. Administración de migraciones mongoid
- 17. generadores y migraciones en complementos (rieles 3)
- 18. Rails 3 migraciones: ¿Agregar una columna de referencia?
- 19. CREAR TIPO en MySQL
- 20. Disparadores en un sistema altamente transaccional
- 21. Cómo crear ventanas emergentes en Rails 3.1
- 22. ¿Disparadores que hacen que INSERT fallen? ¿Posible?
- 23. ¿Cómo crear procedimientos temporales en MySQL?
- 24. Crear un nuevo entorno en Rails
- 25. ¿Hay un equivalente PHP de las migraciones de Rails?
- 26. Crear dominio en MySQL
- 27. Migraciones para Java
- 28. Disparadores SQL: ¿cómo obtengo el valor actualizado?
- 29. MongoMapper y migraciones
- 30. cómo crear el campo calculado en mysql?
Gracias, por su recurso, no sabía que existía :) –
Mejor eliminar la referencia a 'rails_on_pg' ahora :) fueron las últimas actualizaciones hace 6 años :) – bbozo