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 WITHog 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 afCREATE TABLE AS SELECTerklæring.,
  • identitetskolonnen kan ikke have en andenDEFAULT 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 medNOT 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

Articles

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *