Legg til en sjekkbegrensning til et eksisterende tabell i Oracle

Legg til en sjekkbegrensning til et eksisterende tabell i Oracle
En sjekkbegrensning lar oss definere de logiske uttrykkene som kan returnere sanne eller usant. Databasemotoren evaluerer deretter alle dataene som settes 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 huske å følge disse reglene:

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

Selv om det er anbefalt å bruke en sjekkbegrensning under opprettelse av bord, kan du møte slike scenarier der du trenger å legge til en sjekkbegrensning til en eksisterende tabell.

La oss diskutere hvordan vi kan gjøre dette i en Oracle -database.

Legg til en sjekkbegrensningserklæring

For å legge til en sjekkbegrensning til en eksisterende databasetabell, bruker vi alter tbale add begrensningserklæring. Syntaksen er som vist:

ALTER TABLE TABLE_NAME
Legg til begrensningsbegrensningsnavn sjekk (check_constraint_expression);

Legg til en sjekkbegrensning til den eksisterende tabellen

La oss demonstrere hvordan vi kan legge til en sjekkbegrensning til en eksisterende tabell. La oss starte med å lage en testtabell:

Lag tabellprodukt_stock (
PRODUKT_ID NUMMER Primærnøkkel,
produktnavn varchar2 (255),
Stock_Quantity Number,
Stock_level varchar2 (255)
);

Den forrige spørringen oppretter en tabell for å lagre produktbeholdningsinformasjonen. Deretter legger du til noen eksempeldata som vist i følgende:

Sett inn Product_Stock (Product_ID, Product_Name, Stock_Quantity, Stock_Level) verdier (1, 'Product1', 100, 'in');
Sett inn Product_Stock (Product_ID, Product_Name, Stock_Quantity, Stock_Level) verdier (2, 'Product2', 13, 'in');
Sett inn Product_Stock (Product_ID, Product_Name, Stock_Quantity, Stock_Level) Verdier (3, 'Product3', 160, 'Out');
Sett inn Product_Stock (Product_ID, Product_Name, Stock_Quantity, Stock_Level) verdier (4, 'Product4', 10, 'in');
Sett inn Product_Stock (Product_ID, Product_Name, Stock_Quantity, Stock_Level) Verdier (5, 'Product5', 320, 'in');

Resulterende bord

Anta at vi ønsker å sikre at de innsatte dataene har en Stock_Quantity på mer enn 100. Vi kan legge til en sjekkbegrensning som følger:

ALTER TABLE PRODUKT_STOCK
Legg til begrensning Validate_stock Check (Stock_Quantity> = 100);

Nå, hvis vi prøver å legge til en rad med Stock_Quantity på mindre enn 100, får vi en feil som følger:

Sett inn Product_Stock (Product_ID, Product_Name, Stock_Quantity, Stock_Level) Verdier (6, 'Product6', 60, 'Out');

Feil

[23000] [2293] ORA-02293: Kan ikke validere (HR.Validate_stock) - Kontroller begrenset krenket

Konklusjon

Der har du det! En måte å legge til en sjekkbegrensning til en eksisterende tabell i Oracle -databaser. Vi håper at du fant denne artikkelen nyttig.