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
- Anda menentukan batasan pemeriksaan pada kolom pada tabel. Periksa kendala adalah ekspresi logis yang mengevaluasi nilai boolean benar atau salah
- Saat baris dimasukkan atau diperbarui dalam tabel, oracle memeriksa ekspresi logika.
- Jika bernilai True, oracle menerima data dan melanjutkan dengan menyisipkan atau menghapus
- 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