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

ROWID (oráculo) - algum uso para isso?


ROWID é a localização física de uma linha. Consequentemente, é a maneira mais rápida de localizar uma linha, mais rápida até do que uma pesquisa de chave primária. Portanto, pode ser útil em certos tipos de transação onde selecionamos algumas linhas, armazenamos seus ROWIDs e depois usamos os ROWIDs em where cláusulas para DML nessas mesmas linhas.

A sintaxe Oracle SELECT ... FOR UPDATE usa ROWID implicitamente, quando atualizamos a linha bloqueada usando WHERE CURRENT OF. Além disso, a tabela EXCEPTIONS (referenciada ao aplicar restrições com a cláusula EXCEPTIONS INTO) possui uma coluna ROW_ID. Isso nos permite identificar rapidamente as linhas que estão quebrando nossa restrição.

Esse último exemplo aponta para outro uso geral:quando estamos escrevendo algum código genérico e precisamos de um mecanismo para armazenar UIDs sem preocupações com tipo de dados, chaves compostas etc.

ROWNUM, por outro lado, é uma pseudocoluna que marca uma linha em um determinado conjunto de resultados. Não tem significado permanente.

editar

O ROWID de um determinado registro pode mudar durante a vida útil de um sistema, por exemplo, por meio de uma reconstrução de tabela. Além disso, se um registro for excluído, um novo registro poderá receber esse ROWID. Conseqüentemente, os ROWIDs não são adequados para uso como UIDs a longo prazo. Mas eles são bons o suficiente para uso em uma transação.