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);
ทำไม ภาษาไทย จึงเป็นภาษาที่ใช้สมองมากกว่าภาษาอังกฤษ
#1 By TonHor on 2009-05-20 14:35