ROWID est l'emplacement physique d'une ligne. Par conséquent, c'est le moyen le plus rapide de localiser une ligne, plus rapide même qu'une recherche de clé primaire. Cela peut donc être utile dans certains types de transactions où nous sélectionnons certaines lignes, stockons leurs ROWID, puis utilisons plus tard les ROWID dans where
clauses pour DML sur ces mêmes lignes.
La syntaxe Oracle SELECT ... FOR UPDATE utilise implicitement ROWID, lorsque nous mettons à jour la ligne verrouillée à l'aide de WHERE CURRENT OF. De plus, la table EXCEPTIONS (référencée lors de l'application de contraintes avec la clause EXCEPTIONS INTO) a une colonne ROW_ID. Cela nous permet d'identifier rapidement les lignes qui cassent notre contrainte.
Ce dernier exemple indique une autre utilisation générale :lorsque nous écrivons un morceau de code générique et que nous avons besoin d'un mécanisme pour stocker les UID sans se soucier du type de données, des clés composites, etc.
ROWNUM, quant à lui, est une pseudo-colonne qui balise une ligne dans un ensemble de résultats donné. Il n'a pas de signification permanente.
modifier
Le ROWID d'un enregistrement donné peut changer au cours de la durée de vie d'un système, par exemple via une reconstruction de table. De plus, si un enregistrement est supprimé, un nouvel enregistrement peut recevoir ce ROWID. Par conséquent, les ROWID ne conviennent pas pour une utilisation à long terme en tant qu'UID. Mais ils sont assez bons pour être utilisés dans une transaction.