Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách tạo ràng buộc not null trong oracle

Ràng buộc Not Null trong oracle là gì

Ràng buộc Not Null trong oracle được sử dụng để thực thi các giá trị not null trong cột trong bảng. Vì vậy, nếu bạn cố gắng chèn null vào cột đó, nó sẽ gây ra lỗi.

Cách tạo ràng buộc không null

Các ràng buộc không null được xác định khi tạo bảng hoặc bạn có thể sửa đổi bảng sau này để thay đổi một cột thành Không null. Hãy xem các ví dụ.

Tạo bảng
Ràng buộc không null được chỉ định nội dòng với cột.

 SQL> TẠO BẢNG "EMP" ("EMPNO" NUMBER (4,0) Không phải Null, "ENAME" VARCHAR2 (10) Không rỗng, "JOB" VARCHAR2 (9), "MGR" NUMBER (4,0) , "HIREDATE" DATE, "SAL" NUMBER (7,2), "COMM" NUMBER (7,2), "DEPTNO" NUMBER (2,0)); Đã tạo bảng. 

Ở đây chúng tôi đã xác định hai ràng buộc không null trên bảng emp. Chúng ta có thể kiểm tra các ràng buộc Không null trên bảng bằng cách sử dụng truy vấn dưới đây

 SQL> cột CONSTRAINT_NAME định dạng a20SQL> cột SEARCH_CONDITION định dạng a50SQL> SELECT Constraint_name, Search_condition FROM User_constraints WHERE Table_name ='EMP' AND Constraint_type ='C'; 

Ràng buộc Not Null cũng được định nghĩa là ràng buộc kiểm tra và có điều kiện tìm kiếm là tên cột không phải null

Thêm Không ràng buộc sau khi tạo bảng

Chúng ta có thể sửa đổi bảng để thêm ràng buộc not null

 SQL> bảng thay đổi emp sửa đổi ("HIREDATE" không null); Đã thay đổi bảng. 

Nếu chúng ta có dữ liệu null trong cột hiện có thì câu lệnh này sẽ không thành công

 SQL> CHỌN Constraint_name, Search_condition FROM User_constraints WHERE Table_name ='EMP' AND Constraint_type ='C' 

Chúng ta cũng có thể đặt tên tùy chỉnh cho ràng buộc Not Null. Đây là ví dụ để chứng minh điều đó

 SQL> TẠO BẢNG "EMP" ("EMPNO" NUMBER (4,0) Ràng buộc EMP_NOTNULL Không phải Null, "ENAME" VARCHAR2 (10) Không null, "JOB" VARCHAR2 (9), "MGR" NUMBER (4, 0), "HIREDATE" DATE, "SAL" NUMBER (7,2), "COMM" NUMBER (7,2), "DEPTNO" NUMBER (2,0)); Đã tạo bảng. SQL> định dạng cột CONSTRAINT_NAME a20 SQL> cột SEARCH_CONDITION định dạng a50 SQL> CHỌN Constraint_name, Search_condition FROM User_constraints WHERE Table_name ='EMP' AND Constraint_type ='C'; 
 SQL> thay đổi bảng emp sửa đổi ("HIREDATE" Ràng buộc H_NOTNULL Không Null); Bảng đã thay đổi. SQL> CHỌN Constraint_name, Search_condition FROM User_constraints WHERE Table_name ='EMP' AND Constraint_type ='C'; 

Cách bỏ ràng buộc Not Null

Chúng tôi cần sửa đổi cột để chấp nhận giá trị null

 SQL> thay đổi bảng trống "HIREDATE"  

Chúng ta cũng có thể loại bỏ ràng buộc not null bằng cách sử dụng lệnh thay đổi lệnh thả ràng buộc bảng

 SQL> thay đổi bảng emp thả ràng buộc EMP_NOTNULL; Bảng đã thay đổi; SQL> CHỌN Constraint_name, Search_condition FROM User_constraints WHERE Table_name ='EMP' AND Constraint_type ='C'; 

Cách thêm ràng buộc không null trên cột chứa giá trị null

Nếu bạn cố gắng thêm một ràng buộc not-null trên cột chứa giá trị null, thì lệnh đó sẽ không thành công vì nó sẽ xác thực tất cả các hàng tất cả các hàng hiện có cho không null ràng buộc. Đôi khi chúng ta muốn giữ các giá trị null hiện có và kiểm tra các hàng trong tương lai xem chúng có chứa giá trị không null cho cột này hay không, sau đó, trong trường hợp đó, chúng ta có thể bật ràng buộc với mệnh đề novalidate. Với mệnh đề này, nó sẽ không kiểm tra các hàng hiện tại, nhưng các hàng trong tương lai sẽ được kiểm tra

 thay đổi bảng emp sửa đổi "HIREDATE" không phải Null novalidate; 

Cũng đọc
thả khóa chính oracle
khóa ngoại trong oracle
Ràng buộc khóa duy nhất trong Oracle
cách kiểm tra tất cả các ràng buộc trên bảng trong oracle
oracle thay đổi loại cột
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. SQLcl để chuyển dữ liệu từ Oracle sang PostgreSQL hoặc YugabyteDB 🅾🐘🚀

  2. Hàm NUMTOYMINTERVAL () trong Oracle

  3. Tăng VOTE diskgroup trong ASM để nâng cấp GI 12.2

  4. Sử dụng hàm Max () để chọn giá trị nhóm

  5. Tính toán chênh lệch giữa 2 ngày / giờ trong Oracle SQL