Oracle
 sql >> Database >  >> RDS >> Oracle

C'è un modo per aggiungere una colonna in una posizione specificata nella tabella Oracle?

Non ha davvero importa dove la colonna si trova fisicamente da select ti permetterà di specificare l'ordine (logicamente) in cui vengono recuperati.

E, se stai usando select * che non ti consente di specificare l'ordine, probabilmente non dovresti esserlo. Ci sono poche preziose situazioni in cui dovresti farlo (strumenti di analisi DB, ad esempio), la maggior parte delle volte è meglio selezionare le singole colonne che desideri, anche se le vuoi tutte. Ciò ti consente di rilevare rapidamente le modifiche allo schema in modo da poter adattare i tuoi programmi ad esse.

In ogni caso, SQL stesso non fornisce garanzie sull'ordine in cui le colonne vengono restituite a meno che tu non esplicitamente elencali. select * possa darteli oggi in ordine ordinale e domani in ordine alfabetico. Anche se una particolare implementazione ti consente di farlo (creando una nuova tabella con la colonna nel posto "giusto" e copiando i dati, o fornendo un'estensione SQL come alter table T insert column C1 before C2 ), lo sconsiglierei. Non sarà portabile ad altre implementazioni e preferisco avere il mio codice il più portabile possibile.

Inoltre, al di là di quanto è possibile specificare in SQL, un DBMS dovrebbe essere in grado di controllare totalmente come memorizza i dati. È possibile che la tua chiave primaria sia un composto della settima e della quarantaduesima colonna e potrebbe essere più efficiente averle all'inizio dei record fisici.