Necesito cambiar el valor predeterminado de un campo de 0 a 3, pero el problema es que ya tengo miles de registros y quiero que esos registros cambien el valor a 3 de 0 solo si el registro tiene el valor predeterminado 0 pero para otros valores como 1, 2 debe seguir siendo el mismo. ¿Cómo puedo hacerlo?Migración para cambiar el valor predeterminado de un campo y cambiar todo el valor del registro existente por el nuevo valor predeterminado solo si tiene un valor predeterminado anterior.
Respuesta
En la migración se debe utilizar el método change_column para modificar la configuración de la tabla como esta:
change_column :my_models, :attribute_name, :integer, :default => 3
Y luego para actualizar todos los registros existentes, en lugar de bucle a través de todos los registros y actualizar de forma individual se puede usar el método update_all desea:
MyModel.update_all({ :attribute_name => 3 }, { :attribute_name => 0 })
El primer argumento le dice al método de qué valor establecido y el segundo dice Es la condición para qué filas actualizar.
Agradable y ordenado, no sabía de esto ... –
Me pregunto si esto podría funcionar solo en ciertas bases de datos ya que no estoy seguro de que todo permita cambiar el valor predeterminado. De todos modos, puedo confirmar que funciona en MySQL. – mahemoff
Acabo de probar esto, y creo que la sintaxis podría haber cambiado. Esto funcionó para mí: 'MyModel.update_all ({: attribute_name => 3}, {: attribute_name => 0})' – AlexBrand
ALTER TABLE your_table MODIFY your_column tinyint(1) NOT NULL DEFAULT 3;
UPDATE your_table SET your_column=3 WHERE your_column=0;
- asumiendo que su columna es
tinyint(1)
, reemplazar su auto si no el mismo NOT NULL
es suponiendo que siempre fuerza la columna para que seaNOT NULl
- 1. ¿Cuál es el valor predeterminado para un campo si no se proporciona un valor predeterminado?
- 2. ¿Es posible cambiar el valor predeterminado de $ profile por un nuevo valor?
- 3. Valor predeterminado de MySQL como el valor de otro campo
- 4. ¿Cómo modificar una columna y cambiar el valor predeterminado?
- 5. DropdownListPara el valor predeterminado
- 6. Asignación del valor predeterminado al crear el archivo de migración
- 7. bash asignar el valor predeterminado
- 8. Modificar el valor hash predeterminado
- 9. valor predeterminado del puntero.
- 10. ¿Valor predeterminado aleatorio/no constante para el campo del modelo?
- 11. valor predeterminado para el campo en el modelo de Django
- 12. ¿Establecer el valor predeterminado en un DataContract?
- 13. Valor predeterminado para el parámetro de función?
- 14. Cómo seleccionar el valor predeterminado de un campo
- 15. WPF toolkit DatePicker cambiar el valor predeterminado 'show calendar'
- 16. OpcionalAttribuir el valor predeterminado del parámetro?
- 17. Agregar el valor predeterminado para el campo de tiempo (7)
- 18. Valor predeterminado para el constructor de atributos?
- 19. python - devolviendo un valor predeterminado
- 20. ¿De dónde viene el valor predeterminado mb_internal_encoding()?
- 21. Html.EditorFor Establecer valor predeterminado
- 22. ¿RLock es un valor predeterminado por bloqueo?
- 23. Cómo cambiar el valor predeterminado "El campo debe ser un número"
- 24. Configuración del valor predeterminado para el atributo de clave externa
- 25. Valor predeterminado para el argumento boost :: function?
- 26. scipy.sparse valor predeterminado
- 27. Yii DROPDOWNLIST valor predeterminado
- 28. Magento - valor predeterminado para el campo de administración
- 29. Seleccionar todo como valor predeterminado para el parámetro Multivalue
- 30. Hibernate valor predeterminado hbm2ddl.auto
¿No puedes simplemente 'ACTUALIZAR la tabla SET valor = 3 DONDE valor = 0'? – Pelshoff