สร้าง Trigger บนฐานข้อมูล MySQL ด้วย phpMyAdmin
ผมเพิ่งรู้ว่าเจ้า phpMyAdmin สามารถสร้าง Trigger ได้ด้วย โอ้วจ๊อดดมันยอดดมาก...เอ่อ..เอาเป็นว่าเรามาเข้าเรื่องของเราดีกว่า..แหะๆ
ว่าด้วยเรื่องของ Trigger
Trigger คือ คืออะไรละ..แง่ว.. ฮ่าๆ ผมจะบอกอย่างงี้ก็แล้วกัน..มันเป็น Event หรือตัวตรวจจับการกระทำต่างๆ ของ Database(ในที่นี้คือ MySQL) ที่เกิดขึ้นกับ Table เช่นการ INSERT, UPDATE, DELETE เมื่อมีเหตุการเหล่านี้เกิดขึ้น Trigger ก็จะทำงาน...ส่วนมันจะทำงานอะไรนั้นก็ขึ้นอยู่กับเราว่าจะกำหนดให้มันทำอะไร
เพื่อไม่ให้เป็นการเสียเวลาผมขอรวบรัดตัดตอนมาที่การสร้าง Table เพื่อทดสอบเจ้าตัว Trigger ของเราโดยผมจะสร้างตารางขึ้นมา 2 ตาราง
1. ตาราง tbl_profile มีโครงสร้างตารางดังนี้
2. ตาราง tbl_log มีโครงสร้างตารางดังนี้
ผมสร้างตารางเรียบร้อยแล้วในหน้า phpMyAdmin สังเกตุเมนูด้านบนจะมีเมนูที่ชื่อว่า Trigger(เทกเกรอ์) ให้เราคลิกเข้าไปเลยครับตามภาพ
เมื่อคลิกเข้าไปที่เมนูทริกเกอร์ก็จะเป็นหน้าจอดังภาพครับ จากนั้นให้เราคลิกที่ปุ่ม "เพิ่ม Trigger"
จากนั้นจะมี Dialog ปรากฏขึ้นมาให้เราสร้าง Trigger ตามภาพ
ให้เรากำหนดค่าลงไปตามนี้ครับ
Trigger name : update_log
ตาราง : tbl_profile
Time : AFTER
เหตุการณ์ : UPDATE
Definition : ใส่ code MySQL ตามด้านล่างเลยครับ
ใส่แค่นี้แหละครับ :) จากนั้นก็กดปุ่ม "ไป" phpMyAdmin ก็จะสร้าง Trigger ให้เรา จากนั้นให้เราลองแก้ไขข้อมูลในตาราง tbl_profile ในฟิลด์ไหนก็ได้ครับ fullname, email, phone เลือกเอาสักฟิลด์ หรือจะลองแก้หมดทั้งสามฟิลด์เลยก็ได้
เมื่อแก้ไขข้อมูลในตาราง tbl_profile เรียบร้อยแล้วให้เราลองไปเปิดดูข้อมูลในตาราง tbl_log จะมีข้อมูลปรากฏขึ้นมาครับ
ผมขอเขียนบทความเอาไว้เท่านี้ก็แล้วกันนะครับ ศึกษาข้อมูลเพิ่มเติมได้ที่คลิปวีดีโอด้านล่างนี้เลยครับ
ว่าด้วยเรื่องของ 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) | |
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 ความคิดเห็น
Mens Titanium Wedding Rings and Necklaces for Men
ตอบลบCustom Made Rings of Steel, Cotton and ford ecosport titanium Blue titanium eyeglasses Rose. $9.99 / Add urban titanium metallic to titanium tv alternative Cart. $12.95. mens wedding bands titanium Default Title. This Ring is made in China, USA.