Introduktion
Oracle Check-begränsning används för att upprätthålla integritetsregler baserade på logiska uttryck, såsom jämförelser. De logiska uttryck som används bör returnera det booleska värdet.
Exempel
En CHECK-begränsning på anställdas löner så att inget lönevärde är större än 100 000.
En CHECK-begränsning på avdelningens platser så att endast platserna "DELHI", "PATNA" och "MUMBAI" är tillåtna.
Så fungerar oracle check constraint
- Du definierar kontrollbegränsningarna för kolumnen i en tabell. Check constraints är ett logiskt uttryck som utvärderas till booleskt värde sant eller falskt
- När rader infogas eller uppdateras i tabellen, kontrollerar oracle de logiska uttrycken.
- Om det utvärderas till True, accepterar Oracle data och för vidare med infoga eller ta bort
- Om det utvärderas till falskt, avvisar Oracle data
Viktiga punkter om kontrollbegränsning
a. Kontrollbegränsning kan skapas på en kolumn eller en grupp av kolumner.
b. En kolumn kan ha en eller flera kontrollbegränsningar.
c. Ordningen i vilken begränsningarna utvärderas är inte definierad
d. Använd aldrig CHECK-begränsningar när någon av de andra typerna av integritetsbegränsningar kan ge den nödvändiga kontrollen.
e. När du definierar flera begränsningar, se till att de inte kommer i konflikt med varandra
Kontrollera begränsningar Begränsning
(1) Villkoret måste vara ett booleskt uttryck som kan utvärderas med hjälp av värdena i raden som infogas eller uppdateras.
(2) Villkoret kan inte ha
en. underfrågor eller sekvenser.
b. SYSDATE, UID, USER eller USERENV SQL-funktioner.
c. pseudokolumner LEVEL, PRIOR eller ROWNUM.
d. användardefinierad SQL-funktion.
(3) En kontrollbegränsning kan inte referera till kolumner i andra tabeller
(4) En kontrollbegränsning kan inte skapas i en orakelvy
Hur man skapar kontrollbegränsningen i Oracle
Oracle-kontrollrestriktioner kan skapas med create table-satsen eller efter att tabellen har skapats med alter table-sats.
Nu när du skapar en tabell kan kontrollrestriktioner skapas i in-line kolumnsyntax eller out-of-line syntax.
in-line syntax
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 också ge kontrollbegränsningen ett anpassat namn
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 syntax
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 också ge kontrollbegränsningen ett anpassat namn
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 flera kolumner är inblandade använder vi enbart out-of-line-syntax
Om du använder inline-syntax kommer det att ge ett fel
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 kontrollbegränsning läggas till efter att tabellen har skapats med hjälp av alter-tabellsyntaxen
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.
Hur man hittar kontrollbegränsningen på tabellen
Följande ordbok innehåller vyerna information 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';
Här står C för Check constraint
Hur man aktiverar/inaktiverar kontrollbegränsningen
SQL> alter table "EMP" disable constraint CHECK_SAL; Table altered. SQL> alter table "EMP" enable constraint CHECK_SAL; Table altered.
Hur man släpper kontrollbegränsningen
alter table "EMP" drop constraint CHECK_SAL; Table altered.
Exempel på kontrollbegränsningar
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 också
ändra tabell lägg till primärnyckel oracle :primärnyckel i oracle identifierar unikt raden i tabellen. Den kan inte vara null &kan skapas vid tidpunkten för tabellskapandet eller efter att tabellen skapats
not null constraint i Oracle :not null constraint i oracle används för att framtvinga inte null-värden i kolumnen i tabellen. Kolla in hur du lägger till, släpp noll-begränsningarna
Unik nyckel i Oracle:Unik nyckel upprätthåller unik i kolumnen i tabellen och hjälper oss att snabbt identifiera raden. Oracle skapar det unika indexet för nyckeln om inget index är tillgängligt
släpp främmande nyckel begränsning oracle:Vi kan släppa begränsningen i Oracle med kommandot alter table. vi kan släppa primär, främmande nyckel, check, inte null och unik begränsning med samma kommando
delete-kommando i oracle
https://docs.oracle.com/cd/B19306_01/server.102/b14200 /clauses002.htm
Rekommenderade kurser
Här är den trevliga Udemy-kursen för Oracle SQL
Oracle-Sql-Steg-för-steg :Den här kursen täcker grundläggande sql, går med, skapar tabeller och ändrar dess struktur, Skapa vy, Union, Union -allt och mycket annat . En bra kurs och måste-kurs för SQL-startare
The Complete Oracle SQL Certification Course :Detta är en bra kurs för alla som vill vara redo för SQL-utvecklare. En trevlig förklarad kurs
Oracle SQL Developer:Essentials, Tips and Tricks :Oracle Sql-utvecklarverktyget används av många utvecklare. Den här kursen ger oss tricks och lektioner om hur man effektivt använder den och blir en produktiv SQL-utvecklare
Oracle SQL Performance Tuning Masterclass 2020 :Prestandajustering är en av de kritiska och mest eftertraktade färdigheterna. Det här är en bra kurs för att lära dig om det och börja göra sql-prestandajustering