การจัดการข้อผิดพลาดของ Trigger ใน MySQL
เมื่อเกิดข้อผิดพลาดระหว่างการทำงานของ Trigger MySQL จะจัดการตามกติกาดังนี้:
- BEFORE Trigger ล้มเหลว: การดำเนินการบนแถวที่เกี่ยวข้องจะไม่ถูกทำงาน
- BEFORE Trigger ถูกเปิดใช้งาน: โดยการพยายามแทรกหรือแก้ไขแถว ไม่ว่าการพยายามนั้นจะสำเร็จภายหลังหรือไม่
- AFTER Trigger จะทำงาน: ก็ต่อเมื่อ BEFORE Trigger ทั้งหมดและการดำเนินการแถวทำงานสำเร็จแล้ว
- ข้อผิดพลาดใน BEFORE หรือ AFTER Trigger: จะทำให้คำสั่งทั้งหมดที่เรียก Trigger ล้มเหลว
- ตารางแบบ Transactional: ความล้มเหลวของคำสั่งจะทำให้เกิด Rollback ทุกการเปลี่ยนแปลงของคำสั่งนั้น ความล้มเหลวของ Trigger ทำให้คำสั่งล้มเหลว จึงก่อให้เกิด Rollback เช่นกัน
- ตารางแบบ Non-transactional: Rollback ไม่สามารถทำได้ ดังนั้นแม้คำสั่งจะล้มเหลว การเปลี่ยนแปลงที่เกิดขึ้นก่อนจุดที่ผิดพลาดจะยังคงมีผลอยู่