Unique Index แบบ Enforce Data Integrity

posted on 20 May 2009 14:10 by nhephex  in Knowledge

.

วันนี้อยากพูดเรื่อง การสร้าง Index ของ Oracle ครับ ประเด็นที่จะขอพูดถึง คือการสร้าง Unique Key สำหรับกันการใส่ข้อมูลที่มีการซ้ำซ้อนในเชิงข้อมูล เช่น

Table ชื่อ TABLE_A

มี Primary Key เป็น Field ID

มี Field BOOK_NO, PROVINCE_NO เป็นตัวตรวจสอบ ในกรณีที่ Field TYPE = 1

เช่น
ข้อมูล Record ID = 1 มีค่า TYPE = 1, BOOK_NO = 123, PROVINCE_NO = 001
ข้อมูล Record ID = 2 มีค่า TYPE = 2, BOOK_NO = '', PROVINCE_NO = ''
ข้อมูล Record ID = 3 มีค่า TYPE = 1, BOOK_NO = 124, PROVINCE_NO = 001

ถ้าเราต้องการ Insert Record ID = 4 แล้วกำหนด TYPE = 1 , BOOK_NO = 123, PROVINCE_NO = 001 อีกครั้ง จะไม่ได้ เพราะมีข้อมูลนี้แล้วที่ Record ID = 1

วิธีการเขียน Index แบบ Unique สำหรับ Table_A นี้ ให้เขียนดังนี้

เช่น ตั้งชื่อ Index นี้ว่า DUP_TYPE_1_CHECK

CREATE UNIQUE INDEX DUP_TYPE_1_CHECK
ON TABLE_A
(CASE WHEN TYPE = 1 THEN BOOK_NO||PROVINCE_NO ELSE NULL END);

 

Comment



smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry

Tweet

ขอ mem ไปแระกันนะพี่ confused smile

#1 By TonHor on 2009-05-20 14:35

ไม่รู้เรื่องเลยครับembarrassed

#2 By tongg on 2009-05-20 15:37