Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So verwenden Sie Check Constraint in Oracle

Einführung

Oracle Check-Einschränkung wird verwendet, um Integritätsregeln basierend auf logischen Ausdrücken, wie z. B. Vergleichen, durchzusetzen. Die verwendeten logischen Ausdrücke sollten den booleschen Wert zurückgeben.
Beispiel
Eine CHECK-Einschränkung für Mitarbeitergehälter, sodass kein Gehaltswert größer als 100000 ist.
Eine CHECK-Einschränkung für Abteilungsstandorte, sodass nur die Standorte „DELHI“, „PATNA“ und „MUMBAI“ sind zulässig.

So funktioniert Oracle Check Constraint

  1. Sie definieren die Check Constraints für die Spalte einer Tabelle. Check Constraints ist ein logischer Ausdruck, der als boolescher Wert wahr oder falsch ausgewertet wird
  2. Wenn Zeilen in die Tabelle eingefügt oder aktualisiert werden, überprüft Oracle die logischen Ausdrücke.
  3. Wenn es zu True ausgewertet wird, akzeptiert Oracle die Daten und überträgt sie mit Insert oder Delete
  4. Wenn es als falsch ausgewertet wird, lehnt Oracle die Daten ab

Wichtige Punkte zum Check Constraint

a. Prüfeinschränkungen können für eine Spalte oder eine Gruppe von Spalten erstellt werden.
b. Eine Spalte kann eine oder mehrere Check Constraints haben.
c. Die Reihenfolge, in der die Einschränkungen ausgewertet werden, ist nicht definiert
d. Verwenden Sie niemals CHECK-Einschränkungen, wenn eine der anderen Arten von Integritätseinschränkungen die erforderliche Überprüfung bereitstellen kann.
e. Stellen Sie beim Definieren mehrerer Einschränkungen sicher, dass sie nicht miteinander in Konflikt stehen

Beschränkungen prüfen

(1) Die Bedingung muss ein boolescher Ausdruck sein, der anhand der Werte in der einzufügenden oder zu aktualisierenden Zeile ausgewertet werden kann.
(2) Die Bedingung darf nicht
a. Unterabfragen oder Sequenzen.
b. SYSDATE-, UID-, USER- oder USERENV-SQL-Funktionen.
c. Pseudospalten LEVEL, PRIOR oder ROWNUM.
d. benutzerdefinierte SQL-Funktion.
(3) Ein Check-Constraint kann nicht auf Spalten in anderen Tabellen verweisen
(4) Ein Check-Constraint kann nicht in einer Oracle-Ansicht erstellt werden

So erstellen Sie die Check-Einschränkung in Oracle

Oracle Check Constraints können mit der create table-Klausel erstellt werden oder nachdem die Tabelle mit der alter table-Klausel erstellt wurde.
Jetzt können beim Erstellen einer Tabelle Check Constraints in Inline-Spaltensyntax oder Out-of-Line erstellt werden Syntax.

Inline-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.

Wir können der Prüfbedingung auch einen benutzerdefinierten Namen geben

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.

Wir können der Prüfbedingung auch einen benutzerdefinierten Namen geben

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.

Wenn mehrere Spalten beteiligt sind, verwenden wir nur die Out-of-Line-Syntax
Wenn Sie die Inline-Syntax verwenden, wird ein Fehler ausgegeben

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.

Jetzt kann eine Prüfbedingung hinzugefügt werden, nachdem die Tabelle mit der Alter Table-Syntax

erstellt wurde
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.

So finden Sie die Check-Einschränkung in der Tabelle

Nach dem Wörterbuch enthalten Ansichten die Informationen zur Einschränkung
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';

Hier steht C für Check Constraint

So aktivieren/deaktivieren Sie die Check-Einschränkung

SQL> alter table "EMP"  disable constraint CHECK_SAL;
 Table altered.
 SQL> alter table "EMP"  enable  constraint CHECK_SAL;
 Table altered.

So löschen Sie die Check-Einschränkung

 alter table "EMP"  drop constraint CHECK_SAL;
 Table altered. 

Beispiel für Check-Einschränkungen

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

Liest auch
Tabelle ändern Primärschlüssel hinzufügen Orakel :Primärschlüssel in Orakel identifiziert eindeutig die Zeile in der Tabelle. Es kann nicht null sein und kann zum Zeitpunkt der Tabellenerstellung oder nach der Erstellung der Tabelle erstellt werden. Sehen Sie sich an, wie Sie Null-Einschränkungen hinzufügen und löschen können
Eindeutiger Schlüssel in Oracle:Der eindeutige Schlüssel erzwingt die Eindeutigkeit in der Spalte in der Tabelle und hilft uns, die Zeile schnell zu identifizieren. Oracle erstellt den eindeutigen Index für den Schlüssel, wenn kein Index verfügbar ist
Fremdschlüssel-Einschränkung entfernen Oracle:Wir können die Einschränkung in Oracle mit dem Befehl alter table löschen. Wir können Primärschlüssel, Fremdschlüssel, Prüfung, Nicht-Null- und Eindeutigkeitsbeschränkung mit demselben Befehl löschen
delete-Befehl in Oracle
https://docs.oracle.com/cd/B19306_01/server.102/b14200 /clauses002.htm

Empfohlene Kurse

Hier ist der nette Udemy-Kurs für Oracle SQL
Oracle-Sql-Schritt-für-Schritt :Dieser Kurs behandelt grundlegendes SQL, Joins, Erstellen von Tabellen und Ändern ihrer Struktur, Erstellen von Ansichten, Union, Union -all und vieles mehr . Ein großartiger Kurs und ein Muss für SQL-Einsteiger
Der vollständige Oracle SQL-Zertifizierungskurs :Dies ist ein guter Kurs für alle, die für SQL-Entwicklerfähigkeiten einsatzbereit werden möchten. Ein gut erklärter Kurs
Oracle SQL Developer:Grundlagen, Tipps und Tricks :Das Oracle Sql-Entwicklertool wird von vielen Entwicklern verwendet. Dieser Kurs gibt uns Tricks und Lektionen, wie man es effektiv nutzt und ein produktiver SQL-Entwickler wird
Oracle SQL Performance Tuning Masterclass 2020 :Leistungsoptimierung ist eine der kritischsten und gefragtesten Fähigkeiten. Dies ist ein guter Kurs, um mehr darüber zu erfahren und mit der Optimierung der SQL-Leistung zu beginnen