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