type ejemplos ejemplo 11g sql database oracle rowid

sql - ejemplos - ¿Qué puede hacer que cambie Oracle ROWID?



rownum oracle (3)

+1 @WW

Como un aparte:

ROWID para tablas organizadas por índice son diferentes (se denominan UROWID, creo), porque la ubicación física de la fila puede cambiar durante las actualizaciones de la tabla (cuando los nodos de árbol se dividen o se unen).

Para que la indexación aún sea posible, UROWID incluye la "id lógica" (la clave principal) y la "probable identificación física" (una ROWID regular), la última de las cuales puede haber expirado.

AFAIK ROWID en Oracle representa la ubicación física de un registro en el archivo de datos apropiado. ¿En qué casos ROWID de un registro puede cambiar?

El que conozco es UPDATE en la tabla particionada que "mueve" el registro a otra partición.

¿Hay otros casos? La mayoría de nuestros DB son Oracle 10.


Como ha dicho, se produce cada vez que la fila se mueve físicamente en el disco, como por ejemplo:

  • Exportación / importación de la tabla
  • ALTER TABLE XXXX MOVE
  • ALTER TABLE XXXX SHRINK SPACE
  • TABLA DE FLASHBACK XXXX
  • Dividir una partición
  • Actualizar un valor para que se mueva a una nueva partición
  • Combinando dos particiones

Si se encuentra en una tabla organizada por índice, una actualización de la clave principal también le proporcionará una ROWID diferente.


Otro +1 a WW, pero solo para agregar un poco más ...

Si la pregunta es si puede almacenar ROWID para un uso posterior, diría "no lo hagas".

Está bien utilizar ROWID dentro de una transacción, por ejemplo, recopilar un conjunto de ROWID para llevar a cabo operaciones posteriores, pero nunca debe almacenar los ROWID en una tabla y asumir que van a estar bien para usarlos en un momento posterior. fecha.