Introduktion
Oracle Check-begrænsning bruges til at håndhæve integritetsregler baseret på logiske udtryk, såsom sammenligninger. De logiske udtryk, der bruges, skal returnere den booleske værdi.
Eksempel
En CHECK-begrænsning på medarbejdernes lønninger, så ingen lønværdi er større end 100.000.
En CHECK-begrænsning på afdelingslokationer, så kun lokationerne "DELHI", "PATNA" og "MUMBAI" er tilladt.
Sådan fungerer oracle check constraint
- Du definerer kontrolbegrænsningerne på kolonnen i en tabel. Check constraints er et logisk udtryk, der evalueres til boolsk værdi sand eller falsk
- Når rækker indsættes eller opdateres i tabellen, kontrollerer Oracle de logiske udtryk.
- Hvis det vurderes til True, accepterer Oracle dataene og overfører dem med indsæt eller slet
- Hvis det vurderes til falsk, afviser Oracle dataene
Vigtige punkter om kontrolbegrænsning
en. Check begrænsning kan oprettes på en kolonne eller en gruppe af kolonner.
b. En kolonne kan have en eller flere kontrolbegrænsninger.
c. Den rækkefølge, som begrænsningerne evalueres i, er ikke defineret
d. Brug aldrig CHECK-begrænsninger, når nogen af de andre typer integritetsbegrænsninger kan give den nødvendige kontrol.
e. Når du definerer flere begrænsninger, skal du sørge for, at de ikke er i konflikt med hinanden
Tjek begrænsning af begrænsninger
(1) Betingelsen skal være et boolesk udtryk, der kan evalueres ved hjælp af værdierne i rækken, der indsættes eller opdateres.
(2) Betingelsen må ikke have
en. underforespørgsler eller sekvenser.
b. SYSDATE, UID, USER eller USERENV SQL-funktioner.
c. pseudokolonner LEVEL, PRIOR eller ROWNUM.
d. brugerdefineret SQL-funktion.
(3) En kontrolbegrænsning kan ikke henvise til kolonner i andre tabeller
(4) En kontrolbegrænsning kan ikke oprettes på en orakelvisning
Sådan opretter du check-begrænsningen i Oracle
Oracle kontrol begrænsninger kan oprettes med oprette tabel klausulen eller efter tabellen er blevet oprettet med alter tabel klausul.
Nu med oprettelse af en tabel, kan tjek begrænsninger oprettes i in-line kolonne syntaks eller out-of-line syntaks.
in-line syntaks
SQL> CREATE TABLE "EMP" ("EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2) check(SAL > 1000), "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO") ); Table created.
Vi kan også give check-begrænsningen et brugerdefineret navn
SQL> CREATE TABLE "EMP" ("EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2) constraint CHECK_SAL check(SAL > 1000), "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO") ); Table created.
out-of-line syntaks
SQL> CREATE TABLE "EMP" ("EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2) , "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO"), check(SAL > 1000) ); Table created.
Vi kan også give check-begrænsningen et brugerdefineret navn
SQL> CREATE TABLE "EMP" ("EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2) , "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO"), constraint CHECK_SAL check(SAL > 1000) ); Table created.
Når flere kolonner er involveret, går vi kun med out-of-line syntaks
Hvis du bruger inline syntaks, vil det give en fejl
SQL> CREATE TABLE "EMP" ("EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2) constraint CHECK_SAL check(SAL > 1000 and DEPTNO is not null), "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO") ); "SAL" NUMBER(7,2) constraint CHECK_SAL check(SAL > 1000 and DEPTNO is not null), * ERROR at line 7: ORA-02438: Column check constraint cannot reference other columns SQL> CREATE TABLE "EMP" ("EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2) , "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO"), constraint CHECK_SAL check(SAL > 1000 and DEPTNO is not null) ); Table created.
Nu kan kontrolbegrænsning tilføjes, efter at tabellen er oprettet ved hjælp af alter-tabellens syntaks
SQL> CREATE TABLE "EMP" ("EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2) , "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO") ); Table created. SQL> alter table "EMP" add constraint CHECK_SAL check(SAL > 1000 and DEPTNO is not null); Table altered.
Sådan finder du kontrolbegrænsningen på bordet
Følgende ordbog indeholder visninger oplysningerne om begrænsning
ALL_CONSTRAINTS
ALL_CONS_COLUMNS
USER_CONSTRAINTS
USER_CONS_COLUMNS
DBA_CONSTRAINTS
DBA_CONS_COLUMNS
SQL> column CONSTRAINT_NAME format a20 SQL> column SEARCH_CONDITION format a50 SQL> SELECT Constraint_name, Search_condition FROM User_constraints WHERE Table_name = 'EMP' AND Constraint_type = 'C';
Her står C for Check constraint
Sådan aktiverer/deaktiverer du kontrolbegrænsningen
SQL> alter table "EMP" disable constraint CHECK_SAL; Table altered. SQL> alter table "EMP" enable constraint CHECK_SAL; Table altered.
Sådan dropper du kontrolbegrænsningen
alter table "EMP" drop constraint CHECK_SAL; Table altered.
Eksempel på check-begrænsninger
col1 >= 0 AND col1 < 85857 user_override in ('Y','N') class = 0 OR class = 1 hwm > 0 cm = 0 OR cm = 1 SEQ >= 0 status = 0 OR status = 1
Læser også
ændre tabel tilføj primær nøgle oracle :primær nøgle i oracle identificerer entydigt rækken i tabellen. Det kan ikke være null &kan oprettes på tidspunktet for tabeloprettelse eller efter tabellen er oprettet
not null constraint i Oracle :not null constraint i oracle bruges til at gennemtvinge ikke null-værdier i kolonnen i tabellen. Tjek, hvordan du tilføjer, slip nul-begrænsningerne
Unik nøgle i Oracle:Unik nøgle håndhæver unik i kolonnen i tabellen og hjælper os med at identificere rækken hurtigt. Oracle opretter det unikke indeks for nøglen, hvis intet indeks er tilgængeligt
slip udenlandsk nøgle-begrænsning oracle:Vi kan droppe begrænsningen i Oracle ved at bruge alter table-kommandoen. vi kan droppe primær, fremmed nøgle, check, ikke null og unik begrænsning med den samme kommando
delete-kommando i oracle
https://docs.oracle.com/cd/B19306_01/server.102/b14200 /clauses002.htm
Anbefalede kurser
Her er det fine Udemy-kursus til Oracle SQL
Oracle-Sql-trin-for-trin :Dette kursus dækker grundlæggende sql, joins, oprettelse af tabeller og ændring af strukturen, Create View, Union, Union -alle og meget andet. . Et godt kursus og must-have kursus for SQL starter
The Complete Oracle SQL Certification Course :Dette er et godt kursus for enhver, der ønsker at være jobklar til SQL-udviklerfærdigheder. Et godt forklaret kursus
Oracle SQL Developer:Essentials, Tips and Tricks :Oracle Sql-udviklerværktøj bliver brugt af mange udviklere. Dette kursus giver os tricks og lektioner til, hvordan man effektivt bruger det og bliver en produktiv sql-udvikler
Oracle SQL Performance Tuning Masterclass 2020 :Ydeevnejustering er en af de kritiske og mest søgte færdigheder. Dette er et godt kursus for at lære om det og begynde at lave sql-ydelsesjustering