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

cara menggunakan batasan cek di oracle

Pengantar

Batasan Pemeriksaan Oracle digunakan untuk menegakkan aturan integritas berdasarkan ekspresi logis, seperti perbandingan. Ekspresi logika yang digunakan harus mengembalikan nilai boolean.
Contoh
Batasan CHECK pada gaji karyawan sehingga tidak ada nilai gaji yang lebih besar dari 100000.
Batasan CHECK pada lokasi departemen sehingga hanya lokasi “DELHI”, “PATNA”, dan “MUMBAI” diperbolehkan.

Cara kerja batasan pemeriksaan Oracle

  1. Anda menentukan batasan pemeriksaan pada kolom pada tabel. Periksa kendala adalah ekspresi logis yang mengevaluasi nilai boolean benar atau salah
  2. Saat baris dimasukkan atau diperbarui dalam tabel, oracle memeriksa ekspresi logika.
  3. Jika bernilai True, oracle menerima data dan melanjutkan dengan menyisipkan atau menghapus
  4. Jika bernilai false, oracle menolak data

Poin penting tentang batasan pemeriksaan

sebuah. Batasan cek dapat dibuat pada kolom atau grup kolom.
b. Kolom mungkin memiliki satu atau lebih batasan pemeriksaan.
c. Urutan di mana kendala dievaluasi tidak didefinisikan
d. Jangan pernah menggunakan batasan CHECK ketika salah satu tipe batasan integritas lainnya dapat menyediakan pemeriksaan yang diperlukan.
e. Saat mendefinisikan beberapa batasan, pastikan batasan tersebut tidak saling bertentangan

Periksa batasan Batasan

(1) Kondisi harus berupa ekspresi boolean yang dapat dievaluasi menggunakan nilai pada baris yang disisipkan atau diperbarui.
(2) Kondisi tidak boleh
a. subquery atau sequence.
b. SYSDATE, UID, USER, atau USERENV fungsi SQL.
c. kolom semu LEVEL, PRIOR, atau ROWNUM.
d. fungsi SQL yang ditentukan pengguna.
(3) Batasan pemeriksaan tidak dapat merujuk kolom di tabel lain
(4) Batasan pemeriksaan tidak dapat dibuat pada tampilan Oracle

Cara membuat batasan pemeriksaan di Oracle

Oracle check constraint dapat dibuat dengan klausa create table atau setelah tabel dibuat dengan alter table clause.
Sekarang dengan membuat tabel, check constraint dapat dibuat dalam sintaks kolom in-line atau out-of-line sintaks.

sintaks sebaris

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.

Kami juga dapat memberikan batasan centang nama khusus

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.

sintaks di luar baris

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.

Kami juga dapat memberikan batasan centang nama khusus

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.

Ketika banyak kolom yang terlibat, kita menggunakan sintaks out-of-line saja
Jika Anda menggunakan, sintaks inline, itu akan menimbulkan kesalahan

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.

Sekarang periksa batasan dapat ditambahkan setelah tabel dibuat menggunakan sintaks ubah tabel

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.

Cara menemukan batasan cek pada tabel

Kamus berikut, tampilan berisi informasi tentang batasan
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';

Di sini C adalah singkatan dari Periksa batasan

Cara mengaktifkan/menonaktifkan batasan pemeriksaan

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

Cara menghilangkan batasan pemeriksaan

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

Contoh Batasan Pemeriksaan

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

Juga Dibaca
mengubah tabel menambahkan kunci utama oracle :kunci utama di oracle secara unik mengidentifikasi baris dalam tabel. Itu tidak boleh null &dapat dibuat pada saat pembuatan tabel atau setelah tabel dibuat
bukan null constraint di Oracle :not null constraint di Oracle digunakan untuk menegakkan nilai bukan null di kolom dalam tabel. Lihat cara menambahkan, menghapus batasan nol
Kunci Unik di Oracle:Kunci unik memberlakukan unik di kolom dalam tabel dan membantu kami mengidentifikasi baris dengan cepat. Oracle membuat indeks unik untuk kunci jika tidak ada indeks yang tersedia
menjatuhkan batasan kunci asing Oracle:Kita dapat menghapus batasan di oracle menggunakan perintah alter table. kita dapat menghapus batasan utama, kunci asing, centang, bukan nol dan unik dengan perintah yang sama
perintah hapus di oracle
https://docs.Oracle.com/cd/B19306_01/server.102/b14200 /clauses002.htm

Kursus yang Direkomendasikan

Berikut adalah Kursus Udemy yang bagus untuk Oracle SQL
Oracle-Sql-Step-by-step :Kursus ini mencakup sql dasar, bergabung, Membuat Tabel dan memodifikasi strukturnya, Membuat Tampilan, Union, Union -semua dan banyak hal lainnya . Kursus yang bagus dan kursus yang harus dimiliki untuk pemula SQL
Kursus Sertifikasi Oracle SQL Lengkap :Ini adalah kursus yang bagus untuk siapa saja yang ingin siap kerja untuk keterampilan pengembang SQL. Kursus yang dijelaskan dengan baik
Pengembang Oracle SQL:Esensi, Kiat, dan Trik :Alat pengembang Oracle Sql sedang digunakan oleh banyak pengembang. Kursus ini memberi kita trik dan pelajaran tentang cara menggunakannya secara efektif dan menjadi pengembang sql yang produktif
Oracle SQL Performance Tuning Masterclass 2020 :Penyetelan kinerja adalah salah satu keterampilan penting dan paling dicari. Ini adalah kursus yang bagus untuk mempelajarinya dan mulai melakukan penyetelan kinerja 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. Array dalam klausa IN() oracle PLSQL

  2. Masukkan gumpalan di database Oracle dengan C #

  3. Contoh untuk Mendemonstrasikan Kerentanan SQL Injection dan Pencegahannya di Oracle

  4. Cara Membuat Prosedur Tersimpan PL/SQL Dengan Parameter Di Database Oracle

  5. Oracle:Hari antara dua tanggal dan Kecualikan hari kerja bagaimana menangani angka negatif