No hay manera dentro de los carriles para especificar la posición de una columna. De hecho, creo que es solo una coincidencia (y por lo tanto no se puede confiar en) que las columnas se crean en el orden en que se nombran en una migración.
El orden de las columnas dentro de una tabla es casi relevante y debe serlo: el "motivo" común es poder ver un subconjunto particular al ejecutar un "SELECT *", pero esa no es una buena razón.
Cualquier otra razón es probablemente un olor de diseño, pero me encantaría saber una razón válida por la que estoy equivocado.
En algunas plataformas, hay un espacio (minúsculo) y ahorro de rendimiento que se obtiene colocando las columnas con la mayor probabilidad de ser NULL hasta el final (porque el DMBS no usará ningún espacio en disco para "seguir" NULL valores, pero creo que tendría que estar en ejecución en el hardware de 1980 para darse cuenta.
Nueva característica muy genial. – yalestar
Gracias por dar una razón válida para preocuparse por el orden de las columnas. Realmente no lo entendí hasta que leí tu respuesta. Si miro la base de datos fuera del ORM, eso generalmente significa la consola de la línea de comandos de SQL o una interfaz de usuario donde puedo mezclar las columnas como me gusta. No pensé en estas cosas nuevas de UI web. :-) – clacke
¿Alguna idea si SQLite admite: después de la opción? No se puede hacer funcionar en ni change_column ni add_column – alexy2k