sql >> Databasteknik >  >> RDS >> Oracle

ROWID (oracle) - någon användning för det?

ROWID är den fysiska platsen för en rad. Följaktligen är det det snabbaste sättet att lokalisera en rad, snabbare till och med än en primärnyckelsökning. Så det kan vara användbart i vissa typer av transaktioner där vi väljer några rader, lagrar deras ROWID och sedan senare använder ROWID i where klausuler för DML mot samma rader.

Oracle SELECT ... FOR UPDATE-syntaxen använder implicit ROWID när vi uppdaterar den låsta raden med WHERE CURRENT OF. Också tabellen EXCEPTIONS (referens till när begränsningar tillämpas med EXCEPTIONS INTO-satsen) har en kolumn ROW_ID. Detta gör att vi snabbt kan identifiera de rader som bryter mot vår begränsning.

Det sistnämnda exemplet pekar på en annan allmän användning:när vi skriver något generiskt stycke kod och behöver en mekanism för att lagra UID:n utan bekymmer med datatyp, sammansatta nycklar, etc.

ROWNUM å andra sidan är en pseudo-kolumn som taggar en rad i en given resultatuppsättning. Det har ingen permanent betydelse.

redigera

ROWID för en given post kan ändras under ett systems livslängd, till exempel genom en tabellombyggnad. Även om en post raderas kan en ny post ges den ROWID. Följaktligen är ROWID inte lämpliga att använda som UID på lång sikt. Men de är tillräckligt bra för användning inom en transaktion.



  1. Laravel:Angiven nyckel var för lång; max nyckellängd är 767 byte

  2. 2 sätt att skapa en tabell på en länkad server med T-SQL

  3. Postgresql Välj rader där kolumn =array

  4. Hur ställer jag in ORDER BY-parametrar med en förberedd PDO-sats?