Oracle Identity Column

Oracle Identity Column
I denne opplæringen lærer du hvordan du bruker og jobber med Oracle Identity -kolonnen for å definere en autogenerert numerisk kolonne i en tabell.

Hvis du noen gang har jobbet med MySQL -databaser, kan du være kjent med Auto_Increment Column. I Oracle bruker vi en identitetskolonne for å la databasemotoren automatisk generere en numerisk verdi for hver rad lagt til tabellen med et spesifikt intervall.

Oracle Identity Column

Oracle Identity -kolonnen er tilgjengelig i versjon 12C og over. Identitetskolonnen genererer automatisk en numerisk verdi for hver rad som settes inn i tabellen.

Siden databasemotoren genererer en unik verdi for hver rad som er lagt til tabellen, fungerer den som en surrogatprimærnøkkel i databasen.

I Oracle definerer vi en identitetskolonne ved å bruke syntaksen nedenfor:

Generert [alltid | Som standard [på null]]
Som identitet [(identitet_options)]

Uttalelsesparametrene, som sett ovenfor, inkluderer følgende:

  1. Generert - Vi starter med det genererte nøkkelordet, der verdiene er automatisk generert av databasemotoren.
  2. Alltid - på samme måte sikrer denne verdien at bare databasemotoren kan legge til verdier i kolonnen. Å prøve å legge til verdier manuelt vil resultere i en feil.
  3. Som standard vil dette føre til en feil hvis du gir en nullverdi til kolonnen.
  4. Som standard på NULL - vil Oracle generere en verdi i stedet for å returnere en feil på NULL -inngang.
  5. Som identitet - dette definerer at dette er en identitetskolonne.
  6. Start med verdien - definerer den opprinnelige verdien som brukes for identitetskolonnen. Som standard starter verdien på 1.
  7. Økning etter verdi - definerer intervallverdien mellom de genererte verdiene. Som standard vil funksjonen bruke et intervall på 1.
  8. Cache - Definerer antall verdier som databasemotoren vil generere på forhånd for å øke ytelsen. Dette alternativet er nyttig når du trenger å autogenerere mange poster.

Oracle Identity Columns

La oss oppdage grunnleggende eksempler på hvordan vi bruker identitetskolonnen i Oracle -databaser.

Oracle Create Identity Column

Den vanligste og anbefalte måten å lage en identitetskolonne til en tabell er under opprettelsen.

Et eksempel nedenfor viser hvordan vi kan oppnå dette:

Lag bordprodukter (
produkt_idnummer generert alltid som identitet,
produktnavn varchar2 (255) ikke null,
Mengde nummer ikke nullsjekk (mengde> 0),
Prisnummer,
Primærnøkkel (Product_ID)
);

Uttalelsen over oppretter en tabell som heter produkter med en identitetskolonne med produkt_id.

Vi kan deretter sette inn noen eksempler på poster i tabellen som:

Sett inn i produkter (produktnavn, mengde, pris) verdier ('Microsoft Volterra', 0, 599);

I dette tilfellet spesifiserte vi ikke verdien for Product_ID -kolonnen i tabellen over. Dette vil tillate databasemotoren å generere verdier for de ekstra kolonnene automatisk. Som nevnt vil Oracle starte med verdien av 1 og øke med 1 for hver rad lagt til.

Som nevnt vil det å prøve å legge til en verdi for identitetskolonnen resultere i en feil:

Sett inn produkter (Product_ID, Product_name, Quantity, Price) verdier (2, 'Microsoft Volterra', 10, 599);

Resulterende feil:

SQL-feil: ORA-32795: Kan ikke sette inn i en generert alltid identitetskolonne

Dette er fordi identitetskolonnen er satt til å generere alltid.

Eksempel 2 - Oracle Identity generert som standard.

Vi kan også endre identitetskolonnen fra generert alltid til generert som standard som:

Lag bordprodukter (
Product_id -nummer generert som standard som identitet,
produktnavn varchar2 (255) ikke null,
Mengde nummer ikke nullsjekk (mengde> 0),
Prisnummer,
Primærnøkkel (Product_ID)
);

I dette tilfellet kan vi manuelt legge til en verdi for Product_ID -kolonnen.

Sett inn produkter (Product_ID, Product_Name, Quantity, Price) Verdier (1, 'Microsoft Volterra', 0, 599);

Tilsvarende, hvis vi ikke gir en verdi for kolonnen, vil databasemotoren generere den automatisk.

Du kan ikke sette inn en nullverdi i en identitetskolonne som definert ovenfor.

Eksempel 3
Vi kan også definere starten med og intervallverdiene under opprettelse av tabell som vist:

Lag bordprodukter (
Product_id nummer generert som standard som identitet starter med 10 økning med 2,
produktnavn varchar2 (255) ikke null,
Mengde nummer ikke nullsjekk (mengde> 0),
Prisnummer,
Primærnøkkel (Product_ID)
);

I dette tilfellet vil de autogenererte verdiene starte på ti og øke med 2 for hver nye rad lagt til tabellen.

Peker å merke seg

Selv om en identitetskolonne gir heftig bekvemmelighet når du jobber med et stort datasett, har den begrensninger. Disse inkluderer:

  1. En tabell kan bare inneholde en identitetskolonne.
  2. En identitetskolonne kan ikke inneholde en standardbegrensning.
  3. En opprette tabell kan ikke arve en identitetskolonne som valgt setning.
  4. Verdien av en identitetskolonne kan bare være en numerisk type.

Konklusjon

I dette innlegget oppdaget du de forskjellige metodene og teknikkene for å jobbe med identitetskolonnen i Oracle -databaser.