Triggers হল DB2 ডেটাবেসের একটি গুরুত্বপূর্ণ ফিচার, যা একটি নির্দিষ্ট ইভেন্ট (যেমন ডেটা ইনসার্ট, আপডেট, বা ডিলিট) ঘটলে স্বয়ংক্রিয়ভাবে একটি অ্যাকশন কার্যকরী করে। Triggers মূলত ডেটাবেসের রেফারেনশিয়াল ইন্টিগ্রিটি বজায় রাখে, ডেটা ম্যানিপুলেশন প্রক্রিয়া নিয়ন্ত্রণ করে, এবং ডেটাবেসের অভ্যন্তরীণ লজিক বাস্তবায়ন করে।
DB2 তে Triggers তৈরি এবং পরিচালনার জন্য কিছু ধাপ অনুসরণ করা হয়। এই টিউটোরিয়ালে DB2 তে Trigger তৈরি, তার ব্যবহার এবং ম্যানেজমেন্ট সম্পর্কে বিস্তারিত আলোচনা করা হবে।
DB2 Trigger তৈরি করা
DB2 তে একটি Trigger তৈরি করতে হলে, CREATE TRIGGER কমান্ড ব্যবহার করা হয়। Trigger সাধারণত একটি নির্দিষ্ট টেবিলের উপর নির্ধারিত হয় এবং সেটি BEFORE বা AFTER নির্দিষ্ট ইভেন্ট (INSERT, UPDATE, DELETE) ঘটলে কার্যকরী হয়।
১. BEFORE Trigger
BEFORE Trigger একটি নির্দিষ্ট ইভেন্টের আগে কার্যকর হয়। এটি মূলত ডেটাবেসের ডেটা আপডেট বা ইনসার্ট হওয়ার আগে শর্ত চেক করতে ব্যবহৃত হয়।
উদাহরণ: একটি BEFORE INSERT trigger তৈরি করা, যাতে নতুন ইনপুট ডেটা বৈধ হয়:
CREATE TRIGGER check_salary
BEFORE INSERT ON employees
REFERENCING NEW AS new_row
FOR EACH ROW
BEGIN
IF new_row.salary < 0 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Salary must be a positive value';
END IF;
END;
এই trigger employees টেবিলে ইনসার্ট হওয়ার আগে কর্মচারীর salary কলামটি চেক করবে এবং যদি এটি নেতিবাচক হয়, তবে তা বাতিল করবে।
২. AFTER Trigger
AFTER Trigger একটি নির্দিষ্ট ইভেন্ট (INSERT, UPDATE, DELETE) ঘটানোর পর কার্যকরী হয়। এটি সাধারণত ডেটা ইনসার্ট, আপডেট বা ডিলিট করার পর প্রক্রিয়া চালানোর জন্য ব্যবহৃত হয়।
উদাহরণ: একটি AFTER INSERT trigger তৈরি করা, যাতে ডেটা ইনসার্ট করার পরে একটি লগ রেকর্ড তৈরি হয়:
CREATE TRIGGER log_employee_insert
AFTER INSERT ON employees
REFERENCING NEW AS new_row
FOR EACH ROW
BEGIN
INSERT INTO employee_logs (employee_id, action, log_time)
VALUES (new_row.employee_id, 'INSERT', CURRENT TIMESTAMP);
END;
এই trigger employees টেবিলে ডেটা ইনসার্ট করার পর employee_logs টেবিলে লগ রেকর্ড তৈরি করবে।
৩. INSTEAD OF Trigger
INSTEAD OF Trigger বিশেষভাবে ব্যবহৃত হয় যখন আপনি কোন নির্দিষ্ট ইভেন্টের পরিবর্তে একটি আলাদা কাজ করতে চান। এটি সাধারণত views এবং complex logic এর জন্য ব্যবহৃত হয়।
উদাহরণ:
CREATE TRIGGER update_employee_salary
INSTEAD OF UPDATE ON employee_salaries
REFERENCING OLD AS old_row NEW AS new_row
FOR EACH ROW
BEGIN
UPDATE employees
SET salary = new_row.salary
WHERE employee_id = old_row.employee_id;
END;
এটি employee_salaries ভিউতে UPDATE কুয়েরি চালানোর পরিবর্তে মূল employees টেবিলের salary কলাম আপডেট করবে।
DB2 তে Trigger ম্যানেজমেন্ট
DB2 তে Trigger তৈরি করার পর, ALTER এবং DROP কমান্ড ব্যবহার করে Trigger পরিবর্তন এবং মুছে ফেলা যেতে পারে।
১. Trigger পরিবর্তন করা (ALTER TRIGGER)
DB2 তে একটি Trigger পরিবর্তন করতে হলে ALTER TRIGGER কমান্ড ব্যবহার করা হয়। তবে, এটি Trigger-এর কিছু অংশ পরিবর্তন করতে সহায়ক হলেও পুরো Trigger পুনরায় তৈরি করতে হতে পারে।
উদাহরণ:
ALTER TRIGGER check_salary
DISABLE;
এটি check_salary Trigger টি DISABLE করবে, অর্থাৎ এটি আর কার্যকরী হবে না।
২. Trigger মুছে ফেলা (DROP TRIGGER)
Trigger মুছে ফেলার জন্য DROP TRIGGER কমান্ড ব্যবহার করা হয়। যখন আর Trigger এর প্রয়োজন না থাকে, তখন এটি মুছে ফেলা হয়।
উদাহরণ:
DROP TRIGGER check_salary;
এটি check_salary Trigger টি মুছে ফেলবে।
৩. Trigger Status চেক করা
DB2 তে Trigger এর স্টেটাস চেক করতে, আপনি SYSIBM.SYSTABLES এবং SYSIBM.SYSTRIGGERS টেবিল ব্যবহার করতে পারেন।
উদাহরণ:
SELECT TRIGGERNAME, STATUS
FROM SYSIBM.SYSTRIGGERS
WHERE TABNAME = 'employees';
এটি employees টেবিলের সাথে সম্পর্কিত Trigger-এর নাম এবং স্ট্যাটাস দেখাবে।
Trigger-এর ব্যবহার এবং সুবিধা
- ডেটা ইন্টিগ্রিটি নিশ্চিত করা: Trigger ব্যবহার করে আপনি ডেটাবেসের মধ্যে ডেটার সঠিকতা এবং ইন্টিগ্রিটি নিশ্চিত করতে পারেন, যেমন অগ্রিম শর্ত আরোপ করে (ইনসার্ট, আপডেট বা ডিলিট হওয়ার আগে)।
- অটোমেটিক ডেটা প্রসেসিং: Trigger ব্যবহার করে স্বয়ংক্রিয়ভাবে নির্দিষ্ট কাজ যেমন লগিং, অডিটিং এবং ডেটা আপডেটিং করা সম্ভব।
- ব্যবসার লজিক বাস্তবায়ন: Trigger ব্যবহার করে ডেটাবেস স্তরে ব্যবসার লজিক বাস্তবায়ন করা যেতে পারে, যা অ্যাপ্লিকেশন লেয়ার থেকে নির্ভরশীলতা কমায়।
- ডেটার ত্রুটি চেকিং: Trigger-এ BEFORE শর্ত ব্যবহার করে ডেটা ইনসার্ট বা আপডেট হওয়ার আগে ত্রুটি চেকিং করা যেতে পারে।
সারসংক্ষেপ
DB2 তে Triggers ডেটাবেসের মধ্যে স্বয়ংক্রিয়ভাবে একাধিক কাজ সম্পাদন করতে ব্যবহৃত হয়। BEFORE এবং AFTER Trigger ডেটাবেসের নির্দিষ্ট ইভেন্টের আগে বা পরে কার্যকরী হতে পারে। INSTEAD OF Trigger বিশেষভাবে ভিউ বা জটিল লজিকের জন্য ব্যবহৃত হয়। Trigger ডেটাবেসের পারফরম্যান্স এবং ইন্টিগ্রিটি বজায় রাখতে সহায়ক, এবং তা ALTER TRIGGER বা DROP TRIGGER কমান্ডের মাধ্যমে পরিচালনা করা যেতে পারে। Trigger ব্যবহারের মাধ্যমে DB2 ডেটাবেসের কার্যক্রমকে আরও সুরক্ষিত এবং কার্যকরী করা যায়।
Read more