Miksi käyttää ROWIDia Oraclessa?


Paras vastaus

Aivan kuten kotiosoitteesi yksilöi asuinpaikkasi, Oracle ROWID tunnistaa yksilöllisesti, missä rivi levyllä on. ROWID: n tiedot antavat Oraclelle kaiken, mitä hän tarvitsee löytääksesi rivisi, levynumeron, sylinterin, lohkon ja siirron lohkoon.

Rowid-arvot niillä on useita tärkeitä käyttötarkoituksia:

  • Ne ovat nopein tapa käyttää yksittäistä riviä.
  • Ne voivat näyttää, kuinka taulukon rivit tallennetaan.
  • Ne ovat taulukon rivien yksilöllisiä tunnisteita.

Älä käytä Rowidia taulukon ensisijaisena avaimena. Jos poistat rivin ja lisäät sen uudelleen esimerkiksi Tuonti ja vienti -apuohjelmilla, sen rivinumero voi muuttua. Jos poistat rivin, Oracle voi määrittää rivinsä uudelleen myöhemmin lisätylle uudelle riville.

Vaikka voit käyttää Rowid-pseudosaraketta valinnassa ja Missä kyselyn lauseke, näitä näennäissarakesarjoja ei tosiasiallisesti ole tallennettu tietokantaan. Et voi lisätä, päivittää tai poistaa Rowid-näennäissarakkeen arvoa.

Vastaus

ROWID on rivin fyysinen sijainti. Oletetaan, että sinulla on taulukko ilman ensisijaisia ​​avaimia. joten tässä taulukossa voi olla päällekkäisiä rivejä. Kuinka poistat päällekkäiset rivit, mutta pidät täsmälleen samanlaisen?

Oracle tarjoaa ROWID: n eräänlaisena korvauksena ensisijaisella avaimella. Voit kirjoittaa sisäkkäisen kyselyn, joka on vastaavaa tyyppiä [(ryhmitä rivin kaikkien sarakkeiden mukaan ja vie MIN (ROWID) kussakin ryhmässä sisäisessä kyselyssä, poista kullekin ryhmälle ryhmän muut rivit ulkokyselyssä)] ..

esimerkiksi:

SQL> select * from employees;

SSN NAME

---------- ----------

1 john

1 john

2 john

2 john

10 sam

11 beth

11 beth

12 beth

8 rows selected.

SQL> delete from employees where ROWID NOT IN (select min(ROWID) from employees

group by ssn,name);

2 rows deleted.

SQL> select * from employees;

SSN NAME

---------- ----------

1 john

2 john

2 john

10 sam

11 beth

12 beth

6 rows selected.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *