যখন ট্রিগার এক্সিকিউশন সময় ত্রুটি ঘটে, MySQL নিম্নলিখিত নিয়ম অনুযায়ী তা হ্যান্ডেল করে:
বিফোর (BEFORE) ট্রিগারের ক্ষেত্রে
- যদি একটি BEFORE ট্রিগার ব্যর্থ হয়, তবে সংশ্লিষ্ট সারিতে অপারেশন সম্পাদিত হয় না।
- একটি BEFORE ট্রিগার সারি ইনসার্ট বা মডিফাই করার চেষ্টা করলে সক্রিয় হয়, চেষ্টাটি পরবর্তীতে সফল হয় কিনা সেটা না বিবেচনা করে।
আফ্টার (AFTER) ট্রিগারের ক্ষেত্রে
- একটি AFTER ট্রিগার শুধুমাত্র তখন এক্সিকিউট হয় যখন কোনো BEFORE ট্রিগার এবং সারি অপারেশন সফলভাবে সম্পন্ন হয়।
সাধারণ ত্রুটি হ্যান্ডলিং
- BEFORE বা AFTER ট্রিগারের সময় কোনো ত্রুটি হলে, ট্রিগার আহ্বানকারী পুরো স্টেটমেন্ট ব্যর্থ হয়ে যায়।
- ট্রানজ্যাকশনাল টেবিলের জন্য: স্টেটমেন্টের ব্যর্থতা সেই স্টেটমেন্ট দ্বারা किए गए সমস্ত পরিবর্তন রোলব্যাক করে। ট্রিগার ব্যর্থ হলে স্টেটমেন্ট ব্যর্থ হয়, সুতরাং ট্রিগার ব্যর্থতাও রোলব্যাক করে।
- নন-ট্রানজ্যাকশনাল টেবিলের জন্য: এই রোলব্যাক করা সম্ভব নয়, তাই যদিও স্টেটমেন্ট ব্যর্থ হয়, ত্রুটির আগে किए गए যেকোনো পরিবর্তন প্রভাবী থাকে।