Oracle Check Begrensning

Oracle Check Begrensning

Data Domain Integrity eller Domain Integrity er en databasefunksjon som sikrer at alle dataene som leveres i en tabellkolonne, følger et definert sett med gyldige verdier. Denne funksjonen minimerer datakorrupsjon og dupliserer verdier i en gitt database.

I denne opplæringen lærer du hvordan du håndhever domeneintegritet i Oracle -databasen din ved å bruke sjekkbegrensningen.

Oracle Check Begrensning

En sjekkbegrensning lar oss definere logiske uttrykk som kan returnere sanne eller usann. Databasemotoren vil deretter evaluere alle dataene som er satt inn eller oppdatert i den kolonnen for å sikre at den holder seg til uttrykksreglene.

Hvis dataene følger uttrykksreglene, godtar databasemotoren dataene og tillater innsatsen eller oppdateringserklæringen. Ellers, hvis dataene ikke overholder lovene, avviser databasemotoren dataene og benekter innsatsen eller oppdateringsoperasjonen.

En enkelt kolonne kan ha en eller flere sjekkbegrensninger, forutsatt at de ikke er i konflikt med de andre eksisterende sjekkbegrensningene. I tillegg skal ikke rekkefølgen av ekspresjonsevaluering antas.

Tilsvarende kan du ha mer enn en kolonne med en sjekkbegrensning.

Regler for en sjekkbegrensning i Oracle

Når du definerer en sjekkbegrensning i Oracle -databaser, må du forsikre deg om:

  1. Kontrollbegrensningen er definert på en orakelbord og ikke en visning.
  2. Kontrollbegrensningen må bare referere til kolonnene i den tabellen og ikke utenlandske tabeller.
  3. En sjekkbegrensning kan ikke defineres i et undervisning.
  4. Et sjekkbegrensningsuttrykk kan ikke inkludere ikke-deterministiske funksjoner, brukerdefinerte funksjoner, nestede tabeller, pseudo-kolonner eller nestede attributter.

Oracle Create Check Begrensning

Det anbefales å lage en sjekkbegrensning når du oppretter en tabell. Dette sikrer at alle dataene som er satt inn eller oppdatert i tabellen samsvarer med begrensningens regler.

Følgende er syntaks for å legge til en sjekkbegrensning under opprettelse av tabell:

Lag tabell tabell_navn (
kolonner,
Kolonne_navn, Data_Type Check (CONSTRAINT_EXPRESSION);
);

For å definere en sjekkbegrensning, starter vi med navnet på kolonnen som vi ønsker å bruke begrensningen ved, kolonnens datatype og sjekknøkkelordet. Endelig blir begrensningsuttrykket gitt inne i et par parenteser.

Selv om det ikke er nødvendig, kan det hende du trenger å tilordne en unik identifikator til sjekkbegrensningen manuelt; I et slikt scenario kan du bruke begrensningserklæringen:

Lag tabell tabell_nam (
kolonner
Begrensningsbegrensning
Sjekk (begrensning_ekspression)
);

Oracle Lag begrensningseksempel

Følgende eksempel oppretter en produkttabell med en sjekkbegrensning som sikrer at aksjen alltid er tilgjengelig:

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 tabellen over definerer vi mengde -kolonnen med en sjekkbegrensning som sikrer at dataverdien til den kolonnen er større enn 0.

I et slikt tilfelle sikrer begrensningen at produktene som er lagret i databasen alltid er på lager.

Hvis vi prøver å legge til en post der mengden er 0 eller et negativt tall, vil Oracle returnere en feil og mislykkes for innsatsen.

Eksempel:

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

Ovennevnte forespørsel returnerer en feil:

SQL Feil [2290] [23000]: ORA-02290: Kontroller begrensning (HR.SYS_C007662) krenket

Oracle drop check begrensning

Når du ikke lenger trenger en sjekkbegrensning på bordet ditt, kan du slippe den fra bordet ved å bruke alteren

Tabell Drop Begrensningskommando:
ALTER TABLE TABLE_NAME
Slipp begrensningsbegrensningsnavn;

Oracle Deaktiver sjekkbegrensning

Noen ganger kan det være lurt å deaktivere en begrensning midlertidig uten å fjerne den fra bordet. Bruk kommandoen:

ALTER TABLE TABLE_NAME
Deaktiver begrensningsbegrensningsnavn;

Oracle Aktiver sjekkbegrensning

For å aktivere en inaktiv sjekkbegrensning, kjør følgende:

ALTER TABLE TABLE_NAME
Aktiver begrensningsbegrensningsnavn;

Konklusjon

I denne opplæringen oppdaget du hvordan du bruker sjekkbegrensningen i Oracle -databaser for å tillate bare verdier som samsvarer med en spesifikk tilstand å bli lagt til eller oppdatert i en gitt tabell.