ผมเพิ่งรู้ว่าเจ้า phpMyAdmin สามารถสร้าง Trigger ได้ด้วย โอ้วจ๊อดดมันยอดดมาก...เอ่อ..เอาเป็นว่าเรามาเข้าเรื่องของเราดีกว่า..แหะๆ
      ว่าด้วยเรื่องของ Trigger
      Trigger คือ คืออะไรละ..แง่ว.. ฮ่าๆ  ผมจะบอกอย่างงี้ก็แล้วกัน..มันเป็น Event หรือตัวตรวจจับการกระทำต่างๆ ของ Database(ในที่นี้คือ MySQL) ที่เกิดขึ้นกับ Table เช่นการ INSERT, UPDATE, DELETE เมื่อมีเหตุการเหล่านี้เกิดขึ้น Trigger ก็จะทำงาน...ส่วนมันจะทำงานอะไรนั้นก็ขึ้นอยู่กับเราว่าจะกำหนดให้มันทำอะไร
       เพื่อไม่ให้เป็นการเสียเวลาผมขอรวบรัดตัดตอนมาที่การสร้าง Table เพื่อทดสอบเจ้าตัว Trigger ของเราโดยผมจะสร้างตารางขึ้นมา 2 ตาราง

1. ตาราง tbl_profile มีโครงสร้างตารางดังนี้
ชื่อ ชนิด
id int(11) PK, AUTO_INCREMENT
fullname varchar(255)
email vachar(150)
phone varchar(15)


2. ตาราง tbl_log มีโครงสร้างตารางดังนี้
ชื่อ ชนิด
id int(11) PK, AUTO_INCREMENT
action_name varchar(100)
column_name vachar(150)
old_value varchar(255)
new_value varchar(255)
log_time datetime

      ผมสร้างตารางเรียบร้อยแล้วในหน้า phpMyAdmin สังเกตุเมนูด้านบนจะมีเมนูที่ชื่อว่า Trigger(เทกเกรอ์) ให้เราคลิกเข้าไปเลยครับตามภาพ



       เมื่อคลิกเข้าไปที่เมนูทริกเกอร์ก็จะเป็นหน้าจอดังภาพครับ จากนั้นให้เราคลิกที่ปุ่ม "เพิ่ม Trigger"



       จากนั้นจะมี Dialog ปรากฏขึ้นมาให้เราสร้าง Trigger  ตามภาพ


      ให้เรากำหนดค่าลงไปตามนี้ครับ

      Trigger name : update_log
       ตาราง : tbl_profile
       Time : AFTER
       เหตุการณ์ : UPDATE
       Definition :  ใส่ code MySQL ตามด้านล่างเลยครับ
begin
if old.fullname <> new.fullname then
    INSERT INTO tbl_log(action_name,key_id,column_name,old_value,new_value,log_time)
    VALUES('UPDATE',old.id,'fullname',old.fullname,new.fullname,NOW());
end if;
if old.email <> new.email then
    INSERT INTO tbl_log(action_name,key_id,column_name,old_value,new_value,log_time)
    VALUES('UPDATE',old.id,'email',old.email,new.email,NOW()); 
end if;
if old.phone <> new.phone then
    INSERT INTO tbl_log(action_name,key_id,column_name,old_value,new_value,log_time)
    VALUES('UPDATE',old.id,'phone',old.phone,new.phone,NOW());
end if;
end

       ใส่แค่นี้แหละครับ :)  จากนั้นก็กดปุ่ม "ไป" phpMyAdmin ก็จะสร้าง Trigger ให้เรา จากนั้นให้เราลองแก้ไขข้อมูลในตาราง tbl_profile ในฟิลด์ไหนก็ได้ครับ fullname, email, phone เลือกเอาสักฟิลด์ หรือจะลองแก้หมดทั้งสามฟิลด์เลยก็ได้
       เมื่อแก้ไขข้อมูลในตาราง tbl_profile เรียบร้อยแล้วให้เราลองไปเปิดดูข้อมูลในตาราง tbl_log จะมีข้อมูลปรากฏขึ้นมาครับ


       ผมขอเขียนบทความเอาไว้เท่านี้ก็แล้วกันนะครับ  ศึกษาข้อมูลเพิ่มเติมได้ที่คลิปวีดีโอด้านล่างนี้เลยครับ

ดาวน์โหลดฐานข้อมูลตัวอย่างได้ที่นี่

1 ความคิดเห็น