sql >> Database teknologi >  >> RDS >> Oracle

ROWID (oracle) - nogen brug for det?

ROWID er den fysiske placering af en række. Det er derfor den hurtigste måde at lokalisere en række på, hurtigere endda end et primærnøgleopslag. Så det kan være nyttigt i visse typer transaktioner, hvor vi vælger nogle rækker, gemmer deres ROWID'er og senere bruger ROWID'erne i where klausuler for DML mod de samme rækker.

Oracle SELECT ... FOR UPDATE-syntaksen bruger implicit ROWID, når vi opdaterer den låste række ved hjælp af WHERE CURRENT OF. Tabellen EXCEPTIONS (der henvises til, når der anvendes begrænsninger med EXCEPTIONS INTO-sætningen) har også en kolonne ROW_ID. Dette giver os mulighed for hurtigt at identificere de rækker, der bryder vores begrænsning.

Sidstnævnte eksempel peger på en anden generel brug:når vi skriver et generisk stykke kode og har brug for en mekanisme til lagring af UID'er uden bekymringer med hensyn til datatype, sammensatte nøgler osv.

ROWNUM på den anden side er en pseudo-kolonne, som tagger en række i et givet resultatsæt. Det har ingen permanent betydning.

rediger

ROWID for en given post kan ændre sig i løbet af et systems levetid, for eksempel gennem en tabelgenopbygning. Hvis en post slettes, kan der også gives en ny post med denne ROWID. ROWID'er er derfor ikke egnede til brug som UID'er på lang sigt. Men de er gode nok til brug inden for en transaktion.



  1. Multi-sætning tabel værdisat funktion vs inline tabel værdisat funktion

  2. Hvordan undslipper jeg et reserveret ord i Oracle?

  3. Hvordan får jeg min postgresql-database til at bruge en versal ufølsom sortering?

  4. Skift type varchar-felt til heltal:kan ikke castes automatisk til typen heltal