Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Cara membuat batasan bukan nol di Oracle

Apa yang bukan batasan Null di Oracle

Batasan Not Null di Oracle digunakan untuk menegakkan nilai bukan null di kolom dalam tabel. Jadi jika Anda mencoba memasukkan null ke dalam kolom itu, itu akan menimbulkan kesalahan.

Cara membuat batasan bukan nol

Batasan bukan nol ditentukan pada pembuatan tabel atau Anda dapat memodifikasi tabel, nanti, agar kolom diubah menjadi Bukan nol. Mari kita lihat contohnya.

Pembuatan tabel
Bukan batasan nol yang ditentukan sebaris dengan kolom.

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. 

Di sini kita telah mendefinisikan dua batasan bukan nol pada tabel emp. Kita dapat memeriksa batasan Not null pada tabel menggunakan kueri di bawah ini

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';

Batasan Not Null juga didefinisikan sebagai batasan pemeriksaan dan memiliki kondisi pencarian sebagai nama kolom bukan null

Menambahkan Bukan kendala setelah pembuatan tabel

Kita dapat memodifikasi tabel untuk menambahkan batasan bukan nol

SQL> alter table emp modify ("HIREDATE" not null);
 Table altered.

Jika kita memiliki data null di kolom yang ada maka pernyataan ini akan gagal

SQL> SELECT Constraint_name, Search_condition
     FROM User_constraints
     WHERE Table_name = 'EMP'  AND
     Constraint_type = 'C'

Kami juga dapat memberikan nama khusus pada batasan Not Null. Berikut adalah contoh untuk mendemonstrasikannya

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';

Cara menghilangkan batasan Not Null

Kita perlu memodifikasi kolom untuk menerima nilai null

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';

Kita dapat menghapus batasan not null menggunakan perintah alter table drop constraint juga

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';

Cara menambahkan batasan not null pada kolom yang berisi nilai null

Jika Anda mencoba menambahkan batasan bukan nol pada kolom yang berisi nilai nol, maka perintah itu akan gagal karena akan memvalidasi semua baris semua baris yang ada untuk batasan bukan nol. Terkadang kami ingin mempertahankan nilai nol yang ada dan memeriksa baris berikutnya yang berisi nilai bukan nol untuk kolom ini, kemudian, dalam kasus itu, kami dapat mengaktifkan batasan dengan klausa novalidate. Dengan klausa ini, itu tidak akan memeriksa baris yang ada, tetapi baris yang akan datang akan diperiksa

alter table emp modify "HIREDATE" not Null novalidate;

Baca Juga
lepaskan kunci utama oracle
Kunci asing di oracle
Konstrain Kunci Unik di Oracle
cara memeriksa semua batasan pada tabel di oracle
oracle mengubah tabel memodifikasi tipe kolom
https://docs.Oracle.com/cd/B28359_01/server.111/b28310/general005.htm#ADMIN11554


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menghapus duplikat dari daftar yang dipisahkan koma dengan regex di Oracle tetapi saya tidak ingin nilai duplikat?

  2. verifikasi_queryable_inventory dikembalikan ORA-20008:Waktu habis

  3. Pencatatan Query SQL Oracle

  4. Oracle REGEXP_LIKE dan batasan kata

  5. Cara membuat batasan bukan nol di Oracle