Articles

Definere Begrensninger I CREATE TABLE i Oracle 12c

DU kan bruke CREATE TABLE-setningen til å håndheve flere forskjellige typer begrensninger i en tabell: kandidatnøkler, primærnøkler, fremmednøkler og kontrollbetingelser. EN BETINGELSESSETNING kan begrense en enkelt kolonne eller gruppe med kolonner i en tabell. Poenget med disse begrensningene er å få Oracle til å gjøre det meste av arbeidet med å opprettholde integriteten til databasen. Jo flere begrensninger du legger til i en tabelldefinisjon, desto mindre arbeid må du gjøre i programmer for å opprettholde dataene. På den annen side, jo flere begrensninger det er i et bord, desto lengre tid tar det å oppdatere dataene.

du kan angi begrensninger på en av to måter: som en del av kolonnedefinisjonen (kjent som en kolonnebegrensning) eller på slutten AV CREATE TABLE-setningen (kjent som en tabellbegrensning). Klausuler som begrenser flere kolonner, må være tabellbegrensninger.

Kandidatnøkkelen

en kandidatnøkkel er en kombinasjon av en eller flere kolonner, hvor verdiene unikt identifiserer hver rad i en tabell. Følgende liste viser opprettelsen AV EN UNIK begrensning FOR TROUBLE-tabellen:

nøkkelen for denne tabellen er kombinasjonen AV BY OG SAMPLE_DATE. Legg merke til at begge kolonnene også er erklært Å IKKE VÆRE NULL. Denne funksjonen krever at du angir verdier for bestemte kolonner for at rader skal settes inn. Det er klart at informasjon om temperatur og nedbør ikke er nyttig uten å vite hvor eller når den ble samlet inn. Denne teknikken er vanlig for kolonner som er tabellens primærnøkkel, men det er også nyttig hvis visse kolonner er kritiske for at dataraden skal være meningsfull. HVIS IKKE NULL ikke er angitt, kan kolonnen HA NULLVERDIER.

Når Du oppretter EN unik begrensning, oppretter Oracle en unik indeks for å håndheve verdienes unikhet. I en primærnøkkelbegrensning må minst en av kolonnene i primærnøkkelen for hver rad IKKE VÆRE NULL.

Primærnøkkelen

primærnøkkelen i en tabell er en av kandidatnøklene som du gir noen spesielle egenskaper. Du kan bare ha en primærnøkkel, og en primærnøkkelkolonne kan ikke inneholde NULLs.

FØLGENDE CREATE TABLE-setning har samme effekt som den forrige, bortsett fra at du kan ha flere UNIKE begrensninger, men BARE EN primærnøkkelbegrensning:

for primær-eller kandidatnøkler med enkeltkolonne, kan du definere nøkkelen i kolonnen med en kolonnebegrensning i stedet for en tabellbegrensning:

iv id=»7373897187″

i dette tilfellet er kolonnen forfatternavn primærnøkkelen, og oracle vil generere ET NAVN for primærnøkkelbegrensningen. Dette anbefales ikke hvis du vil håndheve en felles navngivningsstandard for nøkler, som diskutert senere i » Navnebegrensninger.»

Angir Indekstabellområder

UNIKE og PRIMÆRE nøkkelbegrensninger oppretter indekser. Med mindre Du forteller Oracle annerledes, plasseres disse indeksene i standardtabellområdet. Hvis du vil angi et annet tabellområde, bruker DU SETNINGSDELEN USING INDEX TABELLOMRÅDE I KOMMANDOEN CREATE TABLE, som vist i følgende liste:

indeksen som er knyttet TIL begrensningen AV PRIMÆRNØKKELEN AUTHOR_PK, vil bli plassert i TABELLOMRÅDET BRUKERE.

MERK

I DE fleste standardinstallasjoner opprettes BRUKERNES tabellplass og er standard tabellplass.

Sekundærnøkkelen

en sekundærnøkkel er en kombinasjon av kolonner med verdier basert på primærnøkkelverdiene fra en annen tabell. En begrensning for fremmednøkkel, også kjent som en begrensning for referanseintegritet, angir at verdiene for sekundærnøkkelen samsvarer med de faktiske verdiene for primærnøkkelen i den andre tabellen. I BOKHYLLETABELLEN refererer FOR eksempel KOLONNEN KATEGORINAVN til verdier FOR KOLONNEN KATEGORINAVN i KATEGORITABELLEN:

du kan referere til en primær eller unik nøkkel, selv i samme tabell. Du kan imidlertid ikke referere til en tabell i en ekstern database I REFERANSESETNINGEN. Du kan bruke tabellskjemaet (som brukes tidligere til å opprette EN PRIMÆRNØKKEL I TABELLEN PROBLEMER) i stedet for kolonneskjemaet til å angi fremmednøkler med flere kolonner.

noen ganger vil du kanskje slette disse avhengige radene når du sletter raden de er avhengige av. NÅR DET gjelder BOKHYLLE og KATEGORI, hvis du sletter ET KATEGORI_NAVN FRA KATEGORI, kan det være LURT Å gjøre de samsvarende BOKHYLLENS kategori_navn-kolonneverdier NULL. I et annet tilfelle vil du kanskje slette hele raden. Setningsdelen PÅ SLETT GJENNOMGRIPENDE lagt TIL REFERANSER-setningsdelen ber Oracle om å slette den avhengige raden når du sletter den tilsvarende raden i den overordnede tabellen. Denne handlingen opprettholder automatisk referanseintegritet.

Kontrollbegrensningen

mange kolonner må ha verdier som er innenfor et bestemt område eller som tilfredsstiller visse betingelser. Med EN kontrollbegrensning kan du angi et uttrykk som alltid må være sant for hver rad i tabellen. FOR eksempel LAGRER VURDERINGSTABELLEN gyldige vurderinger; for å begrense de tilgjengelige verdiene utover grensene som håndheves av kolonnedefinisjonen, kan du bruke EN kontrollbegrensning, som vist i følgende liste:

en kontrollbegrensning på kolonnenivå kan ikke referere til verdier i andre rader; den kan ikke bruke pseudokolonnene SOM SYSDATE, USER, CURRVAL, NEXTVAL, LEVEL og ROWNUM. Du kan bruke tabellbegrensning-skjemaet (i motsetning til kolonnebegrensning-skjemaet) til å referere til flere kolonner i EN kontrollbegrensning.

Navngivningsbegrensninger

du kan navngi begrensningene dine. Hvis du bruker en effektiv navneordning for begrensningsnavnene, vil du være bedre i stand til å identifisere og administrere begrensningene. Navnet på en begrensning skal identifisere tabellen den virker på og typen begrensning den representerer. Primærnøkkelen på TABELLEN PROBLEMER kan for eksempel bli kalt TROUBLE_PK.

du kan angi et navn for en begrensning når du oppretter begrensningen. Hvis du ikke angir et navn for betingelsen, genererer Oracle et navn. De fleste av oracles genererte begrensningsnavn er AV FORMEN SYS_C#### ## (FOR EKSEMPEL SYS_C000145). Fordi det systemgenererte betingelsesnavnet ikke forteller deg noe om tabellen eller begrensningen, bør du nevne begrensningene dine.

I eksemplet nedenfor OPPRETTES og navngis primærnøkkelbegrensningen, som en del AV KOMMANDOEN OPPRETT TABELL FOR PROBLEMTABELLEN (legg merke TIL BETINGELSESSETNINGEN):

BETINGELSESKLAUSULEN I KOMMANDOEN CREATE TABLE navngir begrensningen (I DETTE tilfellet TROUBLE_PK). Du kan bruke denne betingelsesnavnet senere når du aktiverer eller deaktiverer begrensninger.