valor tipo son que por para los invalido defecto dato columna campo cambiar atributos mysql ruby-on-rails

tipo - valor por defecto campo mysql



La migraciĆ³n para cambiar el valor predeterminado de un campo y cambiar todo el valor del registro existente al nuevo valor predeterminado solo si tiene un valor predeterminado antiguo. (2)

Necesito cambiar el valor predeterminado de un campo de 0 a 3, pero el problema es que ya tengo miles de registros y deseo que esos registros cambien el valor de 3 a 0 solo si el registro tiene un valor predeterminado de 0, pero para otros valores como 1, 2 debe seguir siendo el mismo. ¿Cómo puedo hacerlo?


En la migración, debe usar el método change_column para modificar la configuración de la tabla de esta manera:

change_column :my_models, :attribute_name, :integer, :default => 3

Y luego, para actualizar todos los registros existentes, en lugar de recorrer todos los registros y actualizarlos individualmente, puede usar el método update_all como este:

MyModel.update_all({ :attribute_name => 3 }, { :attribute_name => 0 })

El primer argumento le dice al método qué valor establecer y el segundo le dice la condición para qué filas actualizar.


ALTER TABLE your_table MODIFY your_column tinyint(1) NOT NULL DEFAULT 3; UPDATE your_table SET your_column=3 WHERE your_column=0;

  1. asumiendo que su columna es tinyint(1) , reemplácelo si no es el mismo
  2. NOT NULL supone que siempre obliga a la columna a NOT NULl