Jumat, 03 Desember 2010

Constraint


Constraint adalah batasan atau aturan yang ada pada table. Constraint mencegah penghapusan data dari suatu table yang mempunyai keterkaitan dengan table yang lain.

Kita dapat menambah dan menghapus contraint pada table yang telah ada dengan menggunakan perintah ALTER TABLE dengan klausa ADD atau DROP.
Sintaks
Alter table table
add [constraint constraint] type (column);
dimana: 
  •     table: nama table 
  •    contraint: nama contraint 
  • type: tipe contraint 
  • column: nama kolom yang terpengaruh oleh constraint
Catatan:
Sintaks constraint name adalah opsional, meskipun direkomendasikan. Jika kita tidak memberi nama terhadap contraint, system akan menciptakan nama contraint tersebut secara otomatis.
Aturan penggunaan 
  •  Kita dapat menambah, menghapus, mengaktifkan, dan menonaktifkan constraint, tetapi kita tidak dapat memodifikasi strukturnya 
  •  Kita dapat menambahkan contraint NOT NULL terhadap kolom dengan menggunakan klausa MODIFY dari perintah ALTER TABLE
Untuk menghapus constraint, kita dapat mengidentifikasi nama constraint dari data dictionary views USER_CONSTRAINTS dan USER_CONS_COLUMNS. Kemudian, kita dapat menggunakan perintah ALTER TABLE dengan klausa DROP. Opsi CASCADE pada klausa DROP menyebabkan seluruh constraint yang bergantung terhadap constraint yang kita hapus akan ikut terhapus.
Sintaks
Alter table table
drop primary key | unique (column) |
constraint constraint [cascade];
dimana: 
  • table: nama table 
  • column: nama kolom dari constraint yang akan dihapus 
  • constraint: nama constraint
Catatan:
Ketika kita menghapus integrity constraint, constraint tersebut tidak lagi dijalankan oleh Oracle dan tidak lagi tersedia di dalam data dictionary.
Mematikan Dan Menghidupkan Constrain
Kita dapat menghidupkan dan mematikan constraint tanpa menghapus atau menciptakannya ulang dengan menggunakan perintah ALTER TABLE dengan klausa ENABLE atau DISABLE.
Sintaks
ALTER TABLE table
DISABLE | ENABLE CONSTRAINT constraint [CASCADE];
Aturan penggunaan 
  • Jika kita menghidupkan constraint, constraint tersebut terpakai pada seluruh data dalam table. Seluruh data dalam table harus memenuhi ketetapan dari contraint tersebut. 
  • Jika kita menghidupkan contraint UNIQUE atau PRIMARY KEY, maka UNIQUE dan PRIMARY KEY index otomatis diciptakan. 
  • Kita dapat menggunakan klausa ENABLE dan DISABLE baik pada perintah CREATE TABLE maupun perintah ALTER TABLE. 
  • Klausa CASCADE mematikan constraint yang bergantung dibawahnya
Oracle menyediakan beberapa tipe constraint berikut :
NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK
- Constraint NOT NULL
Suatu kolom yang didefinisikan dengan constraint NOT NULL tidak boleh berisi nilai NULL. Kolom yang befungsi sebagai kunci primer (primary key) otomatis tidak boleh NULL. Contoh penggunaan constarint ini :
CREATE TABLE employees(
 employee_id    NUMBER(6),
 last_name      VARCHAR2(25) NOT NULL,
 salary         NUMBER(8,2),
 commission_pct NUMBER(2,2),

 Constraint UNIQUE
Constraint UNIQUE mendefinisikan suatu kolom menjadi bersifat unik. Contoh penggunaan constarint UNIQUE :
CREATE TABLE employees(
 employee_id      NUMBER(6),
 last_name        VARCHAR2(25) NOT NULL,
 email            VARCHAR2(25),
 salary           NUMBER(8,2),
 commission_pct   NUMBER(2,2),
 hire_date        DATE NOT NULL,
...
 CONSTRAINT emp_email_uk UNIQUE(email));





- Constraint PRIMARY KEY
Constraint PRIMARY KEY membentuk key yang unik untuk suatu table. Kolom yang didefinisikan sebagai PRIMARY KEY akan mengidentifikasi suatu baris data menjadi unik.
CREATE TABLE   departments(
 department_id           NUMBER(4),
 department_name      VARCHAR2(30)
 CONSTRAINT        dept_name_nn NOT NULL,
 manager_id               NUMBER(6),
 location_id                NUMBER(4),
 CONSTRAINT        dept_id_pk PRIMARY KEY(department_id));
- Constraint FOREIGN KEY
FOREIGN KEY constraint didefinisikan pada suatu kolom yang ada pada suatu table, dimana kolom tersebut juga dimiliki oleh table yang lain sebagai suatu PRIMARY KEY.
 Contoh penggunaannya adalah :
CREATE TABLE employees(
 employee_id      NUMBER(6),
 last_name        VARCHAR2(25) NOT NULL,
 email            VARCHAR2(25),
 salary           NUMBER(8,2),
 commission_pct   NUMBER(2,2),
 hire_date        DATE NOT NULL,
...
 department_id    NUMBER(4),
 CONSTRAINT emp_dept_fk FOREIGN KEY (department_id)
 REFERENCES departments(department_id),
 CONSTRAINT emp_email_uk UNIQUE(email));

- Constraint CHECK
Constraint CHECK digunakan untuk mendefinisikan suatu kondisi yang harus dipenuhi oleh tiap baris data dalam table. Contoh syntaxnya adalah :
ALTER TABLE order_status2 ADD CONSTRAINT order_status2_status_ck
CHECK (status IN ('PLACED', 'PENDING', 'SHIPPED'));
Selanjutnya dicoba dilakukan insert ke tabel.
INSERT INTO order_status2 (   id, status, last_modified, modified_by )
VALUES (  2, 'CLEARED', '01-JAN-2005', 2);
Akan keluar error,karena field status hanya boleh dimasuki oleh string PLACED,PENDING atau SHIPPED

Tidak ada komentar:

Posting Komentar