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

ROWID (oráculo):¿algún uso para ello?

ROWID es la ubicación física de una fila. En consecuencia, es la forma más rápida de localizar una fila, incluso más rápido que una búsqueda de clave principal. Por lo tanto, puede ser útil en ciertos tipos de transacciones en las que seleccionamos algunas filas, almacenamos sus ROWID y luego usamos los ROWID en where cláusulas para DML contra esas mismas filas.

La sintaxis Oracle SELECT ... FOR UPDATE usa implícitamente ROWID, cuando actualizamos la fila bloqueada usando WHERE CURRENT OF. Además, la tabla EXCEPTIONS (a la que se hace referencia al aplicar restricciones con la cláusula EXCEPTIONS INTO) tiene una columna ROW_ID. Esto nos permite identificar rápidamente las filas que están rompiendo nuestra restricción.

Ese último ejemplo apunta a otro uso general:cuando estamos escribiendo algún código genérico y necesitamos un mecanismo para almacenar UID sin preocupaciones sobre el tipo de datos, claves compuestas, etc.

ROWNUM, por otro lado, es una pseudocolumna que etiqueta una fila en un conjunto de resultados dado. No tiene un significado permanente.

editar

El ROWID para un registro dado puede cambiar durante la vida útil de un sistema, por ejemplo, a través de la reconstrucción de una tabla. Además, si se elimina un registro, se podría asignar un nuevo registro a ese ROWID. En consecuencia, los ROWID no son adecuados para su uso como UID a largo plazo. Pero son lo suficientemente buenos para usar dentro de una transacción.