เราต้องเข้าใจข้อดี ข้อเสีย และข้อจำกัดของการใช้ทริกเกอร์ MySQL เพื่อให้สามารถใช้งานได้อย่างมีประสิทธิภาพ
ข้อดี
ต่อไปนี้คือข้อดีของการใช้ทริกเกอร์ MySQL -
- ความซื่อสัตย์ ของข้อมูล − ด้วยความช่วยเหลือของทริกเกอร์ MySQL เราสามารถตรวจสอบความสมบูรณ์ของข้อมูลในตารางได้ กล่าวคือ ทริกเกอร์ MySQL เป็นอีกทางเลือกหนึ่งในการตรวจสอบความสมบูรณ์ของข้อมูล
- มีประโยชน์ในการจับข้อผิดพลาด - ทริกเกอร์ MySQL สามารถตรวจจับข้อผิดพลาดในตรรกะทางธุรกิจในชั้นฐานข้อมูลได้
- ทางเลือก วิธีเรียกใช้งานที่กำหนดเวลาไว้ - อันที่จริงแล้ว ด้วยการใช้ทริกเกอร์ MySQL เราไม่ต้องรอเพื่อเรียกใช้งานที่กำหนดเวลาไว้ เนื่องจากทริกเกอร์จะถูกเรียกใช้โดยอัตโนมัติ "ก่อน" หรือ "หลัง" การแก้ไขจะกระทำกับข้อมูลในตาราง
- การตรวจสอบ − ที่จริงแล้วทริกเกอร์ MySQL มีประโยชน์มากสำหรับจุดประสงค์ในการตรวจสอบการเปลี่ยนแปลงที่ทำในตาราง
- การป้องกันธุรกรรมที่ไม่ถูกต้อง− ทริกเกอร์ MySQL มีประโยชน์มากในการป้องกันธุรกรรมที่ไม่ถูกต้อง
- การบันทึกเหตุการณ์− ทริกเกอร์ MySQL สามารถบันทึกเหตุการณ์และยังสามารถเก็บข้อมูลในการเข้าถึงตารางได้
ข้อเสีย
ต่อไปนี้คือข้อเสียของการใช้ทริกเกอร์ MySQL -
- ไม่สามารถแทนที่การตรวจสอบทั้งหมดได้ - อันที่จริง ทริกเกอร์ MySQL ไม่สามารถแทนที่การตรวจสอบทั้งหมดได้และสามารถให้การตรวจสอบเพิ่มเติมได้เท่านั้น
- มองไม่เห็นจากแอปพลิเคชันไคลเอนต์ - โดยพื้นฐานแล้วทริกเกอร์ MySQL จะถูกเรียกใช้และดำเนินการที่มองไม่เห็นจากแอปพลิเคชันไคลเอ็นต์ ดังนั้นจึงเป็นเรื่องยากมากที่จะทราบว่าเกิดอะไรขึ้นในเลเยอร์ฐานข้อมูล
- กำหนดภาระงานบนเซิร์ฟเวอร์ - ทริกเกอร์สามารถกำหนดให้เซิร์ฟเวอร์ฐานข้อมูลมีภาระงานสูง
- ไม่แนะนำสำหรับข้อมูลความเร็วสูง - ทริกเกอร์ไม่เป็นประโยชน์สำหรับใช้กับข้อมูลความเร็วสูง เช่น ข้อมูลเมื่อมีเหตุการณ์จำนวนมากต่อวินาที เป็นเพราะในกรณีของข้อมูลความเร็วสูง ทริกเกอร์จะถูกทริกเกอร์ตลอดเวลา
ข้อจำกัด
ต่อไปนี้คือข้อจำกัดบางประการที่ใช้กับทริกเกอร์ MySQL -
- ทริกเกอร์เพียงครั้งเดียวสำหรับแต่ละช่วงเวลา/เหตุการณ์ - แต่ละตารางสามารถมีทริกเกอร์ได้เพียงตัวเดียวสำหรับแต่ละชุดเวลา/เหตุการณ์ (เช่น:เราไม่สามารถกำหนดทริกเกอร์ BEFORE INSERT สองตัวสำหรับตารางเดียวกันได้)
- คืนสินค้า ไม่อนุญาตให้ใช้คำสั่ง - เนื่องจากทริกเกอร์ไม่คืนค่าใดๆ ดังนั้นจึงไม่อนุญาตคำสั่ง RETURN
- ข้อจำกัดของคีย์ต่างประเทศ - ทริกเกอร์ไม่ได้เปิดใช้งานโดยการทำงานของคีย์ต่างประเทศ
- ข้อมูลเมตาที่ล้าสมัย - สมมติว่า หากทริกเกอร์โหลดลงในแคช ทริกเกอร์จะไม่โหลดซ้ำโดยอัตโนมัติเมื่อมีการเปลี่ยนแปลงข้อมูลเมตาของตาราง ในกรณีนี้ ทริกเกอร์สามารถทำงานได้โดยใช้ข้อมูลเมตาที่ล้าสมัย
- ไม่สามารถใช้คำสั่ง 'CALL' ได้ - เราไม่สามารถใช้คำสั่ง CALL ในทริกเกอร์ได้
- ไม่สามารถสร้างตารางชั่วคราวหรือมุมมอง - เราไม่สามารถสร้างมุมมองสำหรับตารางชั่วคราวหรือมุมมองได้
- ไม่ได้เปิดใช้งานโดยการเปลี่ยนแปลงใน INFORMATION_SCHEMA - ที่จริงแล้ว ทริกเกอร์ไม่ได้เปิดใช้งานโดยการเปลี่ยนแปลงที่ทำในตาราง INFORMATION_SCHEMA หรือ performance_schema เป็นเพราะตารางเหล่านี้เป็นมุมมองและไม่อนุญาตให้ทริกเกอร์ในการดู