Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Existe uma maneira de adicionar coluna em uma posição especificada na tabela Oracle?


Realmente não importa onde a coluna está fisicamente desde select permitirá que você especifique a ordem (logicamente) em que eles são recuperados.

E, se você estiver usando selecione * que não permite que você especifique a ordem, você provavelmente não deveria. Existem pouquíssimas situações em que você deveria fazer isso (ferramentas de análise de banco de dados, por exemplo), na maioria das vezes é melhor selecionar as colunas individuais que você deseja, mesmo se quiser todas. Isso permite que você capture alterações de esquema rapidamente para que possa adaptar seus programas a elas.

De qualquer forma, o próprio SQL não garante a ordem em que as colunas são retornadas, a menos que você explicitamente liste-os. selecione * pode entregá-los a você em ordem ordinal hoje e em ordem alfabética amanhã. Mesmo que uma implementação específica permita que você faça isso (criando uma nova tabela com a coluna no lugar "certo" e copiando os dados, ou fornecendo uma extensão SQL como alter table T insert column C1 before C2 ), eu aconselho contra isso. Ele não será portátil para outras implementações e eu prefiro ter meu código o mais portátil possível.

Além disso, além do que você pode especificar no SQL, um SGBD deve ser capaz de controlar totalmente como ele armazena dados. Pode ser que sua chave primária seja um composto da sétima e quadragésima segunda coluna e pode ser mais eficiente tê-las na frente dos registros físicos.