Was ist eine Nicht-Null-Einschränkung in Oracle
Nicht-Null-Einschränkungen in Oracle werden verwendet, um Nicht-Null-Werte in der Spalte in der Tabelle zu erzwingen. Wenn Sie also versuchen, Null in diese Spalte einzufügen, wird ein Fehler ausgegeben.
So erstellen Sie eine Nicht-Null-Einschränkung
Nicht-Null-Einschränkungen werden bei der Tabellenerstellung definiert, oder Sie können die Tabelle später ändern, um eine Spalte in Nicht-Null zu ändern. Schauen wir uns die Beispiele an.
Tabellenerstellung
Nicht-Null-Einschränkung wird inline mit der Spalte angegeben.
SQL> CREATE TABLE "EMP"
("EMPNO" NUMBER(4,0) Not Null,
"ENAME" VARCHAR2(10) Not null,
"JOB" VARCHAR2(9),
"MGR" NUMBER(4,0),
"HIREDATE" DATE,
"SAL" NUMBER(7,2) ,
"COMM" NUMBER(7,2),
"DEPTNO" NUMBER(2,0)
);
Table created. Hier haben wir zwei Nicht-Null-Einschränkungen für die Tabelle emp definiert. Wir können die Not-Null-Einschränkungen für die Tabelle mit der folgenden Abfrage überprüfen
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';
Nicht-Null-Constraints sind auch als Check-Constraints definiert und haben Suchbedingungen, da der Spaltenname nicht null ist
Not-Einschränkung nach Tabellenerstellung hinzufügen
Wir können die Tabelle ändern, um die Nicht-Null-Einschränkung
hinzuzufügenSQL> alter table emp modify ("HIREDATE" not null);
Table altered. Wenn in der Spalte Nulldaten vorhanden sind, schlägt diese Anweisung fehl
SQL> SELECT Constraint_name, Search_condition
FROM User_constraints
WHERE Table_name = 'EMP' AND
Constraint_type = 'C'
Wir können der Not Null-Beschränkung auch einen benutzerdefinierten Namen geben. Hier ist das Beispiel, um es zu demonstrieren
SQL> CREATE TABLE "EMP"
("EMPNO" NUMBER(4,0) Constraint EMP_NOTNULL Not Null,
"ENAME" VARCHAR2(10) Not null,
"JOB" VARCHAR2(9),
"MGR" NUMBER(4,0),
"HIREDATE" DATE,
"SAL" NUMBER(7,2) ,
"COMM" NUMBER(7,2),
"DEPTNO" NUMBER(2,0)
);
Table created.
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'; 
SQL> alter table emp modify ("HIREDATE" Constraint H_NOTNULL Not Null);
Table altered.
SQL> SELECT Constraint_name, Search_condition
FROM User_constraints
WHERE Table_name = 'EMP' AND
Constraint_type = 'C';
So löschen Sie die Not Null-Einschränkung
Wir müssen die Spalte ändern, um Nullwerte zu akzeptieren
SQL>alter table emp modify "HIREDATE" Null;
Table altered.
SQL> SELECT Constraint_name, Search_condition
FROM User_constraints
WHERE Table_name = 'EMP' AND
Constraint_type = 'C';
Wir können die Not-Null-Einschränkung auch mit dem Befehl alter table drop constraint löschen
SQL> alter table emp drop constraint EMP_NOTNULL ;
Table altered;
SQL> SELECT Constraint_name, Search_condition
FROM User_constraints
WHERE Table_name = 'EMP' AND
Constraint_type = 'C';
So fügen Sie eine Nicht-Null-Einschränkung für die Spalte hinzu, die Nullwerte enthält
Wenn Sie versuchen, eine Nicht-Null-Einschränkung für die Spalte hinzuzufügen, die Nullwerte enthält, schlägt dieser Befehl fehl, da alle Zeilen und alle vorhandenen Zeilen auf Nicht-Null-Einschränkung validiert werden. Manchmal möchten wir die vorhandenen Nullwerte beibehalten und für zukünftige Zeilen prüfen, ob sie einen Nicht-Nullwert für diese Spalte enthalten. In diesem Fall können wir die Einschränkung mit der novalidate-Klausel aktivieren. Mit dieser Klausel werden die vorhandenen Zeilen nicht überprüft, aber zukünftige Zeilen werden überprüft
alter table emp modify "HIREDATE" not Null novalidate;
Auch lesen
Oracle Primärschlüssel löschen
Fremdschlüssel in Oracle
Unique Key Constraint in Oracle
wie man alle Constraints für eine Tabelle in Oracle überprüft
Oracle Alter Table Modify Column Type
https://docs.oracle.com/cd/B28359_01/server.111/b28310/general005.htm#ADMIN11554