Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ข้อดี ข้อเสีย และข้อจำกัดของการใช้ MySQL Trigger


ควรเข้าใจข้อดี ข้อเสีย และข้อจำกัดของ Trigger เพื่อใช้งานได้อย่างมีประสิทธิภาพ

ข้อดี (Advantages)

  • ความสมบูรณ์ของข้อมูล (Data Integrity) — Trigger ช่วยตรวจสอบความถูกต้องของข้อมูลในตาราง เป็นทางเลือกอื่นนอกเหนือจาก constraint
  • จับข้อผิดพลาดทางธุรกิจ (Error Catching) — สามารถจับข้อผิดพลาดในชั้นฐานข้อมูลได้
  • ทางเลือกสำหรับงานที่排程 (Scheduled Tasks) — Trigger ทำงานอัตโนมัติก่อน/หลังการเปลี่ยนแปลงข้อมูล ไม่ต้องรอ排程
  • ตรวจสอบการเปลี่ยนแปลง (Auditing) — เหมาะสำหรับบันทึกประวัติการเปลี่ยนแปลงตาราง
  • ป้องกันธุรกรรมที่ไม่ถูกต้อง (Invalid Transaction Prevention) — สามารถปฏิเสธการดำเนินการที่ผิดกฎได้
  • บันทึกเหตุการณ์ (Event Logging) — บันทึกการเข้าถึงตารางหรือเหตุการณ์ต่างๆ

ข้อเสีย (Disadvantages)

  • ไม่แทนที่การตรวจสอบทั้งหมดได้ — ให้เพียงการตรวจสอบเพิ่มเติม (extended validation) เท่านั้น
  • ซ่อนอยู่จากแอปพลิเคชันไคลเอนต์ — ทำงานเบื้องหลัง ยากที่จะ debug หรือทราบว่าเกิดอะไรในชั้นฐานข้อมูล
  • โหลดระบบเซิร์ฟเวอร์สูง — อาจทำให้เซิร์ฟเวอร์ทำงานหนักขึ้น
  • ไม่เหมาะกับข้อมูลความเร็วสูง (High Velocity Data) — หากมี event จำนวนมากต่อวินาที Trigger จะถูกเรียกบ่อยเกินไป ส่งผลประสิทธิภาพ

ข้อจำกัด (Restrictions)

  • Trigger เดียวต่อ timing/event — ตารางเดียวมี trigger ได้เพียงอันเดียวต่อแต่ละชุด timing/event (เช่น ไม่ได้มี BEFORE INSERT 2 ตัว)
  • ห้ามใช้ RETURN — Trigger ไม่คืนค่า จึงไม่สามารถใช้ RETURN ได้
  • ข้อจำกัด Foreign Key — Trigger ไม่ถูกเรียกโดยการกระทำของ foreign key
  • ข้อมูลเมตาสลับเก่า (Outdated Metadata) — หาก trigger ถูกโหลดในแคชแล้ว metadata ตารางเปลี่ยน Trigger อาจทำงานด้วย metadata เก่า
  • ห้ามใช้ CALL statement — ไม่สามารถใช้ CALL ใน trigger ได้
  • ห้ามสร้าง TEMPORARY table หรือ VIEW — ไม่สามารถสร้างตารางชั่วคราวหรือ view ภายใน trigger
  • ไม่ถูกกระตุ้นโดยการเปลี่ยนแปลง INFORMATION_SCHEMA — เพราะเป็น view และ trigger ไม่ได้อนุญาตบน view