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

cách sử dụng ràng buộc kiểm tra trong oracle

Giới thiệu

Ràng buộc Kiểm tra Oracle được sử dụng để thực thi các quy tắc toàn vẹn dựa trên các biểu thức logic, chẳng hạn như so sánh. Các biểu thức logic được sử dụng sẽ trả về giá trị boolean.
Ví dụ
Ràng buộc KIỂM TRA đối với tiền lương của nhân viên để không có giá trị lương nào lớn hơn 100000.
Ràng buộc KIỂM TRA đối với các vị trí bộ phận để chỉ các vị trí “DELHI”, “PATNA” và “MUMBAI” được phép.

Ràng buộc kiểm tra tiên lượng hoạt động như thế nào

  1. Bạn xác định các ràng buộc kiểm tra đối với cột trên bảng. Ràng buộc kiểm tra là một biểu thức logic đánh giá giá trị boolean là true hoặc false
  2. Khi các hàng được chèn hoặc cập nhật trong bảng, tiên tri sẽ kiểm tra các biểu thức logic.
  3. Nếu nó được đánh giá là True, oracle chấp nhận dữ liệu và chuyển tiếp bằng cách chèn hoặc xóa
  4. Nếu nó cho kết quả là false, oracle sẽ từ chối dữ liệu

Các điểm quan trọng về ràng buộc kiểm tra

một. Ràng buộc kiểm tra có thể được tạo trên một cột hoặc một nhóm cột.
b. Một cột có thể có một hoặc nhiều ràng buộc kiểm tra.
c. Thứ tự mà các ràng buộc được đánh giá không được xác định
d. Không bao giờ sử dụng ràng buộc KIỂM TRA khi bất kỳ loại ràng buộc toàn vẹn nào khác có thể cung cấp kiểm tra cần thiết.
e. Khi xác định nhiều ràng buộc, hãy đảm bảo chúng không xung đột với nhau

Kiểm tra giới hạn ràng buộc

(1) Điều kiện phải là một biểu thức boolean có thể được đánh giá bằng cách sử dụng các giá trị trong hàng được chèn hoặc cập nhật.
(2) Điều kiện không được có
a. truy vấn con hoặc chuỗi.
b. Các hàm SQL SYSDATE, UID, USER hoặc USERENV.
c. các cột giả LEVEL, PRIOR hoặc ROWNUM.
d. hàm SQL do người dùng định nghĩa.
(3) Ràng buộc kiểm tra không thể tham chiếu đến các cột trong các bảng khác
(4) Không thể tạo ràng buộc kiểm tra trên chế độ xem oracle

Cách tạo ràng buộc kiểm tra trong oracle

Các ràng buộc kiểm tra trong Oracle có thể được tạo bằng mệnh đề tạo bảng hoặc sau khi bảng đã được tạo bằng mệnh đề bảng thay đổi.
Giờ đây với việc tạo bảng, các ràng buộc kiểm tra có thể được tạo theo cú pháp cột trong dòng hoặc ngoài dòng cú pháp.

cú pháp nội dòng

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.

Chúng tôi cũng có thể đặt tên tùy chỉnh cho ràng buộc kiểm tra

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.

cú pháp ngoại dòng

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.

Chúng tôi cũng có thể đặt tên tùy chỉnh cho ràng buộc kiểm tra

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.

Khi nhiều cột có liên quan, chúng tôi chỉ sử dụng cú pháp ngoại dòng
Nếu bạn sử dụng cú pháp nội dòng, nó sẽ gây ra lỗi

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.

Bây giờ bạn có thể thêm ràng buộc kiểm tra sau khi tạo bảng bằng cú pháp bảng thay đổi

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.

Cách tìm ràng buộc kiểm tra trên bảng

Sau từ điển, các dạng xem chứa thông tin về ràng buộc
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';

Ở đây C là viết tắt của Kiểm tra ràng buộc

Cách bật / tắt ràng buộc kiểm tra

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

Cách bỏ ràng buộc kiểm tra

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

Ví dụ về ràng buộc Kiểm tra

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

Cũng đã đọc
bảng thay đổi thêm khóa chính oracle:khóa chính trong oracle xác định duy nhất hàng trong bảng. Nó không thể là null &có thể được tạo tại thời điểm tạo bảng hoặc sau khi bảng được tạo
ràng buộc không null trong Oracle:ràng buộc không null trong oracle được sử dụng để thực thi các giá trị không null trong cột trong bảng. Xem cách thêm, bỏ các ràng buộc null
Unique Key trong Oracle:Unique Key thực thi duy nhất trong cột trong bảng và giúp chúng tôi xác định hàng một cách nhanh chóng. Oracle tạo chỉ mục duy nhất cho khóa nếu không có chỉ mục nào
drop oracle ràng buộc khóa ngoại:Chúng ta có thể loại bỏ ràng buộc trong oracle bằng cách sử dụng lệnh Alterna table. chúng ta có thể loại bỏ khóa chính, khóa ngoại, kiểm tra, không rỗng và ràng buộc duy nhất bằng cùng một lệnh
lệnh xóa trong oracle
https://docs.oracle.com/cd/B19306_01/server.102/b14200 /clauses002.htm

Các khóa học được đề xuất

Đây là Khóa học Udemy hay dành cho Oracle SQL
Oracle-Sql-Step-by-step:Khóa học này bao gồm sql cơ bản, các phép nối, Tạo Bảng và sửa đổi cấu trúc của nó, Tạo Dạng xem, Liên minh, Liên hợp-tất cả và nhiều thứ khác . Một khóa học tuyệt vời và phải có cho người mới bắt đầu sử dụng SQL
Khóa học chứng chỉ SQL hoàn chỉnh của Oracle :Đây là một khóa học tốt cho bất kỳ ai muốn sẵn sàng tìm việc cho các kỹ năng của nhà phát triển SQL. Một khóa học được giải thích thú vị
Oracle SQL Developer:Cơ bản, Mẹo và Thủ thuật :Công cụ dành cho nhà phát triển Oracle Sql đang được nhiều nhà phát triển sử dụng. Khóa học này cung cấp cho chúng ta các thủ thuật và bài học về cách sử dụng nó một cách hiệu quả và trở thành một nhà phát triển sql hiệu quả
Oracle SQL Performance Tuning Masterclass 2020 :Điều chỉnh hiệu suất là một trong những kỹ năng quan trọng và được tìm kiếm nhiều nhất. Đây là một khóa học tốt để tìm hiểu về nó và bắt đầu thực hiện điều chỉnh hiệu suất sql


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle PL / SQL:Xuất dữ liệu từ một bảng sang CSV

  2. Xử lý lỗi Oracle

  3. ORA-27154 / ORA-27146

  4. Kích thước tối đa của VARCHAR2 trong PL / SQL và SQL là bao nhiêu?

  5. Bắt đầu với Cơ sở dữ liệu tự trị của Oracle trên Đám mây