sql >> Base de Datos >  >> RDS >> Oracle

¿Hay alguna forma de agregar una columna en una posición específica en la tabla de Oracle?

Realmente no importa donde la columna está físicamente desde select le permitirá especificar el orden (lógicamente) en el que se recuperan.

Y, si está utilizando select * que no le permite especificar el orden, probablemente no debería hacerlo. Hay muy pocas situaciones en las que debería estar haciendo eso (herramientas de análisis de base de datos, por ejemplo), la mayoría de las veces es mejor seleccionar las columnas individuales que desea, incluso si las desea todas. Esto le permite detectar cambios de esquema rápidamente para que pueda adaptar sus programas a ellos.

En cualquier caso, el propio SQL no garantiza el orden en que se devuelven las columnas a menos que usted explícitamente ponlos en una lista. select * puede dárselos en orden ordinal hoy y en orden alfabético mañana. Incluso si una implementación particular le permite hacerlo (creando una nueva tabla con la columna en el lugar "correcto" y copiando los datos, o proporcionando una extensión SQL como alter table T insert column C1 before C2 ), lo desaconsejaría. No será portátil para otras implementaciones y prefiero que mi código sea lo más portátil posible.

Además, más allá de lo que puede especificar en SQL, un DBMS debería poder controlar totalmente cómo almacena datos. Puede ser que su clave principal sea un compuesto de las columnas séptima y cuadragésima segunda y puede ser más eficiente tenerlas al principio de los registros físicos.