Triggers হল স্বয়ংক্রিয় SQL কোড যা কোনো নির্দিষ্ট ডেটাবেস ইভেন্ট (যেমন INSERT, UPDATE, DELETE) ঘটলে চলতে শুরু করে। এটি একটি বিশেষ ধরনের স্টোরড প্রোসিডিউর যা ডেটাবেসে কোন পরিবর্তন ঘটানোর আগে বা পরে স্বয়ংক্রিয়ভাবে রান হয়। ট্রিগার মূলত ডেটাবেসের ইন্টিগ্রিটি বজায় রাখতে এবং নির্দিষ্ট কাজ বা যাচাই করার জন্য ব্যবহার করা হয়।
Triggers এর কাজ কী?
Triggers এর কাজ হল ডেটাবেসের উপর নির্দিষ্ট ইভেন্ট ঘটলে তা স্বয়ংক্রিয়ভাবে কিছু এক্সিকিউট করা। উদাহরণস্বরূপ:
- ডেটা ইনসার্ট করার আগে বা পরে কিছু চেক বা অ্যাকশন নেওয়া।
- ডেটা আপডেট করার আগে বা পরে কিছু যাচাই বা রেকর্ড পরিবর্তন করা।
- ডেটা ডিলিট করার আগে বা পরে একটি লজিকাল যাচাই বা রেকর্ড মুছে ফেলা।
Triggers মূলত ডেটাবেসের ইন্টিগ্রিটি রক্ষা করে এবং প্রোগ্রামিংয়ে স্বয়ংক্রিয়তা বা অটোমেশন আনতে সহায়তা করে।
Triggers এর টাইপস
BEFORE Trigger
এই ধরনের ট্রিগার একটি নির্দিষ্ট টেবিলে ডেটা ইনসার্ট, আপডেট বা ডিলিট করার আগে চালিত হয়। এর মাধ্যমে আপনি ডেটাবেসে পরিবর্তন আনার আগে কিছু যাচাই বা প্রক্রিয়া সম্পন্ন করতে পারেন।উদাহরণ:
BEFORE INSERT TriggerCREATE TRIGGER before_insert_employee BEFORE INSERT ON employees FOR EACH ROW BEGIN IF NEW.salary < 5000 THEN SET NEW.salary = 5000; END IF; END;উপরের উদাহরণে, BEFORE INSERT Trigger একটি চেক করবে যে, যদি স্যালারি ৫০০০ এর কম হয়, তাহলে এটি অটোমেটিক্যালি ৫০০০ সেট করে দেবে।
AFTER Trigger
এই ধরনের ট্রিগার একটি নির্দিষ্ট টেবিলে ডেটা ইনসার্ট, আপডেট বা ডিলিট করার পর চালিত হয়। এটি সাধারণত সেইসব কাজের জন্য ব্যবহার করা হয় যেগুলি ডেটা আপডেট হওয়ার পর করা উচিত।উদাহরণ:
AFTER UPDATE TriggerCREATE TRIGGER after_update_employee AFTER UPDATE ON employees FOR EACH ROW BEGIN IF OLD.salary <> NEW.salary THEN INSERT INTO salary_changes (employee_id, old_salary, new_salary) VALUES (NEW.employee_id, OLD.salary, NEW.salary); END IF; END;এই উদাহরণে, AFTER UPDATE Trigger ডেটাবেসে একটি স্যালারি আপডেট হলে, সেই পরিবর্তনটি একটি আলাদা টেবিলে সেভ করে রাখে।
INSTEAD OF Trigger
এই ধরনের ট্রিগার নির্দিষ্ট ইভেন্টের পরিবর্তে একটি নির্দিষ্ট কাজ করে। এটি সাধারণত VIEW এর ক্ষেত্রে ব্যবহার করা হয়, যেখানে ডেটাবেসের মূল টেবিল পরিবর্তন করার পরিবর্তে একটি নির্দিষ্ট কাস্টমাইজড কার্যকলাপ করা হয়।উদাহরণ:
INSTEAD OF DELETE TriggerCREATE TRIGGER instead_of_delete_employee INSTEAD OF DELETE ON employees FOR EACH ROW BEGIN INSERT INTO deleted_employees (employee_id, name, reason) VALUES (OLD.employee_id, OLD.name, 'Deleted due to business reasons'); END;এখানে, INSTEAD OF DELETE Trigger যখন কোনো কর্মচারী ডিলিট করা হবে, তখন মূল টেবিল থেকে ডিলিট না হয়ে বরং সেই কর্মচারীর তথ্য একটি আলাদা টেবিলে সংরক্ষণ করা হবে।
Triggers কিভাবে কাজ করে?
- Trigger ইভেন্ট: প্রথমে, একটি ট্রিগার সংশ্লিষ্ট টেবিলের ওপর কোনো ইভেন্ট (INSERT, UPDATE, DELETE) ঘটে।
- Trigger Activation: ইভেন্ট ঘটলে, সংশ্লিষ্ট ট্রিগারটি একটিভেট হয় এবং নির্ধারিত কার্যক্রম (যেমন: ডেটা পরিবর্তন, লগিং, যাচাই ইত্যাদি) সম্পাদন করা হয়।
- Trigger Execution: ট্রিগারটি একবার চালু হলে, এটি কোডের মাধ্যমে নির্ধারিত কার্যক্রম সম্পন্ন করে। এটি BEFORE বা AFTER ইভেন্টের উপর নির্ভর করে।
- Transaction Completion: যদি ট্রিগার কোনো ভুল বা লজিক্যাল চেক চিহ্নিত করে, তবে সেটি পুরো ট্রানজ্যাকশনকে রদ করতে পারে বা সংশোধিত ফলাফল ডেটাবেসে সংরক্ষণ করতে পারে।
Triggers এর সুবিধা এবং অসুবিধা
সুবিধা:
- স্বয়ংক্রিয়তা: ট্রিগারগুলি ডেটাবেসের বিভিন্ন কার্যক্রম অটোমেটিক্যালি পরিচালনা করে, ফলে অ্যাপ্লিকেশন ডেভেলপারের জন্য কাজ সহজ হয়।
- ডেটাবেস ইন্টিগ্রিটি বজায় রাখা: এটি ডেটাবেসের মধ্যে নির্দিষ্ট নিয়ম এবং শর্ত বজায় রাখে, যেমন ডেটা যাচাই, অটোমেটিক ক্যাশিং ইত্যাদি।
- লগিং এবং অডিটিং: ট্রিগার ব্যবহার করে আপনি ডেটাবেসে সকল পরিবর্তন লগ বা ট্র্যাক করতে পারেন, যা পরবর্তী সময়ে অডিটিং এর জন্য সহায়ক।
অসুবিধা:
- পারফরম্যান্স ইস্যু: ট্রিগারগুলি অতিরিক্ত কার্যক্রম চালাতে পারে, যা ডেটাবেসের পারফরম্যান্সে নেতিবাচক প্রভাব ফেলতে পারে।
- ডিবাগিং এর জটিলতা: কিছু ক্ষেত্রে, ট্রিগারের কার্যক্রম প্রোগ্রামিং বা কুয়েরি ডিবাগিংকে জটিল করে তুলতে পারে।
- ডিপেন্ডেন্সি: অতিরিক্ত ট্রিগার ব্যবহারে ডেটাবেসের উপর নির্ভরশীলতা বেড়ে যেতে পারে এবং কোনো পরিবর্তন করলে সেটা পুরো সিস্টেমের ওপর প্রভাব ফেলতে পারে।
উপসংহার
SQL Triggers হল অত্যন্ত শক্তিশালী টুল যা ডেটাবেসের মধ্যে স্বয়ংক্রিয় কার্যক্রম এবং যাচাই প্রক্রিয়া চালানোর জন্য ব্যবহৃত হয়। এটি ডেটাবেসের স্বচ্ছতা এবং ইন্টিগ্রিটি নিশ্চিত করতে সহায়তা করে, তবে এর ব্যবহারে সতর্কতা অবলম্বন করা উচিত কারণ এটি পারফরম্যান্সে প্রভাব ফেলতে পারে এবং সঠিকভাবে ব্যবহৃত না হলে তা জটিলতা সৃষ্টি করতে পারে।
Read more