As respostas e links sobre maiúsculas e minúsculas estão corretos, mas sua situação vai um pouco além de um simples problema de maiúsculas e minúsculas, tanto porque o nome da sua coluna começou com um sublinhado quanto porque seu cliente aparentemente está ocultando a citação de você.
Se você tentou criar uma tabela com uma coluna chamada
_id
, sem citá-lo, você obteria um erro 'ORA-00911:caractere inválido', cujo texto de causa diz 'identificadores não podem começar com nenhum caractere ASCII diferente de letras e números'; o que também está errado, pois também não pode começar com um número (por exemplo, 0_id
dá 'ORA-00904::identificador inválido'). Isso é respaldado pelas regras de nomenclatura de objetos de banco de dados :Portanto, parece que o Aqua Data Studio está seguindo uma convenção de colocar a versão em maiúsculas do nome do objeto que você fornece entre aspas duplas, uma prática mencionada em uma das postagens vinculadas.
Pelo que você mostrou,
select _id from ...
é passado para o Oracle como select "_ID" from ...
, o que é bom se o nome da coluna foi criado como "_ID"
. Parece que é o caso de table1
, mas table2
foi criado como "_id"
- para que a incompatibilidade de maiúsculas e minúsculas gere o ORA-00904 legítimo que você está vendo. Seu cliente não está modificando um nome de coluna que já está entre aspas duplas, então
select "_id" from ...
é passado para o Oracle como está e funciona bem para table2
(mas, inversamente, falharia para table1
). O Oracle exige que o nome seja colocado entre aspas duplas se não seguir as regras para identificadores sem aspas e se tiver sido criado como entre aspas - a menos que o valor entre aspas original fosse válido de qualquer maneira, ou seja, segue as regras sem aspas e foi inserido em maiúsculas. Como o nome da coluna começa com um sublinhado, no que diz respeito ao Oracle, todas as referências a ele devem ser colocadas entre aspas duplas, independentemente do caso. Seu cliente está apenas fazendo isso em segundo plano, se você não o citou.
Seguir o conselho que outros deram para evitar identificadores entre aspas e sempre usar nomes válidos sem aspas evitaria problemas como esse.