resum.: i denne tutorial lærer du, hvordan du bruger Oracle identity-kolonnen til nemt at definere en automatisk genereret numerisk kolonne til en tabel.
Introduktion til Oracle identity kolonne
Oracle 12c indført en ny måde, der giver dig mulighed for at definere en id-kolonne i en tabel, som er magen til den AUTO_INCREMENT
kolonne i MySQL eller IDENTITY
kolonne på SQL Server.
identitetskolonnen er meget nyttig for kolonnen surrogat primær nøgle., Når du indsætter en ny række i identitetskolonnen, genererer Oracle automatisk og indsætter en sekventiel værdi i kolonnen.
for at definere en identitetskolonne bruger du identitetsklausulen som vist nedenfor:
for det første er GENERATED
nøgleord obligatorisk.for det andet kan du angive en mulighed for at generere identitetsværdier:
-
GENERATED ALWAYS
: Oracle genererer altid en værdi for identitetskolonnen. Forsøg på at indsætte en værdi i kolonnen identitet vil forårsage en fejl., -
GENERATED BY DEFAULT
: Oracle genererer en værdi for kolonnen identitet, hvis du ikke angiver nogen værdi. Hvis du angiver en værdi, vil Oracle indsætte denne værdi i kolonnen identitet. For denne indstilling udsteder Oracle en fejl, hvis du indsætter en NULL-værdi i kolonnen identitet. -
GENERATED BY DEFAULT ON NULL
: Oracle genererer en værdi for identitetskolonnen, hvis du angiver en NULL-værdi eller slet ingen værdi.
for det tredje kan du have en række indstillinger for kolonnen identitet.,
START WITH initial_value
styrer den oprindelige værdi, der skal bruges til kolonnen identitet. Standardindgangsværdien er 1.INCREMENT BY internval_value
definerer intervallet mellem genererede værdier. Som standard er intervalværdien 1.CACHE
definerer et antal værdier, som Oracle skal generere på forhånd for at forbedre ydelsen. Du bruger denne indstilling til kolonnen, der har et stort antal indsatser.
Oracle identitet kolonne eksempler
lad os tage nogle eksempler på at bruge Oracle identitet kolonner.,
A), der GENERERES ALTID eksempel
følgende sætning opretter en tabel, der hedder identity_demo
, der består af en id-kolonne:
følgende erklæring indsætter en ny række i identity_demo
tabel:
Fordi vi ikke angive en værdi for den id
kolonne, Oracle automatisk genereret en sekventiel værdi startende fra 1.,
følgende erklæring forsøg på at indsætte en værdi i id
identitet kolonne:
Oracle udsendte en fejl:
Fordi id-kolonne, der blev defineret som GENERATED ALWAYS
, det kunne ikke acceptere nogen fastsat værdi.,
B) GENERATED BY DEFAULT example
Let’s change the id
column to GENERATED BY DEFAULT
:
The following statement inserts a new row into the identity_demo
table:
It worked as expected.,
følgende erklæring indsætter en ny række i identity_demo
tabel med en fastsat værdi for den id
kolonne:
I dette eksempel, Oracle brugt fastsat værdi, og sat den til bordet.,For det første, genskaber identity_demo
tabelposition > > hvis id
kolonne er defineret som identitet kolonne med den oprindelige værdi, som starter fra 100:
for det Andet, indsætte en række i en identity_demo
tabel:
Tredje, forespørge på data fra identity_demo
tabel:
Som du kan se, den oprindelige værdi af id
kolonne er 100, som angivet i identiteten klausul.,
E) forøgelse efter valgeksempel
skift først id-kolonnen i tabellen identity_demo
, der indeholder begge START WITH
og INCREMENT BY
indstillinger.
for det Andet, indsæt to rækker i identity_demo
tabel:
Tredje, forespørge på data fra tabel til at kontrollere skær:
Som du kan se, den første række har id værdien 10. Den anden række har id-værdien 20., Dette er, hvad vi definerede for ID-kolonnen, der skulle starte med 10 og stige med 10 for den nye række.
Oracle identity column begrænsninger
identitetskolonnerne er underlagt følgende begrænsninger:
- hver tabel har en og kun en identitetskolonne.
- datatypen af kolonnen identitet skal være en numerisk datatype. den brugerdefinerede datatype må ikke bruges med identitetsklausulen.
- identitetskolonnen er ikke arvet af
CREATE TABLE AS SELECT
erklæring., - identitetskolonnen kan ikke have en anden
DEFAULT
begrænsning. - krypteringsalgoritmen for krypterede identitetskolonner kan udledes, derfor bør du bruge en stærk krypteringsalgoritme.
- identitetskolonnens inline-begrænsning må ikke være i strid med
NOT NULL
ogNOT DEFERRABLE
– begrænsningen angivet i identitetsklausulen.i denne tutorial har du lært, hvordan du bruger Oracle identity-kolonnen, der giver dig mulighed for nemt at definere en automatisk genereret numerisk kolonne til en tabel.,- var denne vejledning nyttig?
- YesNo