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:
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:
Konklusjon
I dette innlegget oppdaget du de forskjellige metodene og teknikkene for å jobbe med identitetskolonnen i Oracle -databaser.