ความเป็นฐานข้อมูลที่ทำงานตรงไปตรงมากึ่ง Manual นี่เอง ซึ่งหากเราเข้าใจการทำงานทั้งหมดก็จะนำไปประยุคใช้ได้อย่างมีประสิทธิภาพมากขึ้น
จากฐานข้อมูล TEST และ Table EMPLOYEE ที่ผู้เขียนได้สร้างขึ้น ผู้เขียนจะทำการเพิ่ม Field "EMPLOYEE_ID" ให้เป็นประเภท INTEGER พร้อมกำหนดให้เป็นแบบ Autoincrement โดยใช้โปรแกรม SQL Manager Interbase/Firebird เหมือนเดิม
กำหนดตามภาพ |
Autoincrement ภายในประกอบด้วย Generator , Trigger และ Procedure |
ในส่วนของ Generator ก็ทำงานเหมือนกัยตัวแปรที่คอยเก็บค่าการเพิ่มตัวเลขเอาไว้ สามารถเปลี่ยนชื่อ และตั้งค่าเริ่มต้นได้ ในที่นี้ให้เริ่มต้นที่ 0 |
ในส่วนของ Trigger โปรแกรมจะเขียน Trigger ให้ทำงานก่อนที่จะเพิ่มข้อมูลเข้ามา (Before Insert) |
//สร้าง Trigger ชื่อ BI_EMPLOYEE_EMPLOYEE_ID ของ Table EMPLOYEE
CREATE TRIGGER BI_EMPLOYEE_EMPLOYEE_ID FOR EMPLOYEE
//ให้ทำงานก่อนมีการเพิ่มข้อมูล
ACTIVE BEFORE INSERT
//กำหนดตำแหน่งการทำงานที่ 0
POSITION 0
AS
BEGIN
//ถ้า Field EMPLOYEE_ID ที่เพิ่มเข้ามาเป็น NULL
IF (NEW.EMPLOYEE_ID IS NULL) THEN
//ให้ Function GEN_ID เพิ่มค่า Generator "EMPLOYEE_EMPLOYEE_ID_GEN" ขึ้นที่ละ 1 แล้วเอาใส่ใน Field EMPLOYEE_ID
NEW.EMPLOYEE_ID = GEN_ID(EMPLOYEE_EMPLOYEE_ID_GEN, 1);
END
ในส่วนของ Procedure เป็น Code ที่ใช้ในการเปลี่ยนค่าใน Field "EMPLOYEE_ID" |
//สร้าง Procedure ชื่อ "EMPLOYEE_EMPLOYEE_ID_AUTOINC"
CREATE PROCEDURE EMPLOYEE_EMPLOYEE_ID_AUTOINC
//คืนค่าเป็น INTEGER
RETURNS (NEW_VALUE INTEGER)
AS
BEGIN
//เพิ่มค่า Generator "EMPLOYEE_EMPLOYEE_ID_GEN" ขึ้นอีก 1
NEW_VALUE = GEN_ID(EMPLOYEE_EMPLOYEE_ID_GEN, 1);
END
ผู้เขียนใส่ Description แล้วกด OK เพื่อเพิ่ม Field จากนั้นกด Compile ด้วย
หน้าต่างแสดงค่าต่างๆ บ่งบอกว่าจะมีการสร้าง Generator กด Commit เพื่อยืนยัน |
ทดสอบเพิ่มข้อมูลลงใน Table EMPLOYEE
เพิ่มข้อมูลแล้วกด Commit Trigger จะทำงานทันทีจะได้ค่าของ Field เพิ่มขึ้นเรื่อยๆ |
จากตัวอย่างมีการเพิ่มข้อมูล 2 Record ค่าของ EMPLOYEE_EMPLOYEE_ID_GEN ก็เพิ่มเป็น 2 เช่นเดียวกัน |
ไม่มีความคิดเห็น:
แสดงความคิดเห็น