Triggers হল DB2 ডেটাবেসের একটি গুরুত্বপূর্ণ ফিচার, যা একটি নির্দিষ্ট ইভেন্ট (যেমন ডেটা ইনসার্ট, আপডেট, বা ডিলিট) ঘটলে স্বয়ংক্রিয়ভাবে একটি অ্যাকশন কার্যকরী করে। Triggers মূলত ডেটাবেসের রেফারেনশিয়াল ইন্টিগ্রিটি বজায় রাখে, ডেটা ম্যানিপুলেশন প্রক্রিয়া নিয়ন্ত্রণ করে, এবং ডেটাবেসের অভ্যন্তরীণ লজিক বাস্তবায়ন করে।
DB2 তে Triggers তৈরি এবং পরিচালনার জন্য কিছু ধাপ অনুসরণ করা হয়। এই টিউটোরিয়ালে DB2 তে Trigger তৈরি, তার ব্যবহার এবং ম্যানেজমেন্ট সম্পর্কে বিস্তারিত আলোচনা করা হবে।
DB2 তে একটি Trigger তৈরি করতে হলে, CREATE TRIGGER কমান্ড ব্যবহার করা হয়। Trigger সাধারণত একটি নির্দিষ্ট টেবিলের উপর নির্ধারিত হয় এবং সেটি BEFORE বা AFTER নির্দিষ্ট ইভেন্ট (INSERT, UPDATE, DELETE) ঘটলে কার্যকরী হয়।
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 একটি নির্দিষ্ট ইভেন্ট (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 বিশেষভাবে ব্যবহৃত হয় যখন আপনি কোন নির্দিষ্ট ইভেন্টের পরিবর্তে একটি আলাদা কাজ করতে চান। এটি সাধারণত 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 তৈরি করার পর, ALTER এবং DROP কমান্ড ব্যবহার করে Trigger পরিবর্তন এবং মুছে ফেলা যেতে পারে।
DB2 তে একটি Trigger পরিবর্তন করতে হলে ALTER TRIGGER কমান্ড ব্যবহার করা হয়। তবে, এটি Trigger-এর কিছু অংশ পরিবর্তন করতে সহায়ক হলেও পুরো Trigger পুনরায় তৈরি করতে হতে পারে।
উদাহরণ:
ALTER TRIGGER check_salary
DISABLE;
এটি check_salary
Trigger টি DISABLE করবে, অর্থাৎ এটি আর কার্যকরী হবে না।
Trigger মুছে ফেলার জন্য DROP TRIGGER কমান্ড ব্যবহার করা হয়। যখন আর Trigger এর প্রয়োজন না থাকে, তখন এটি মুছে ফেলা হয়।
উদাহরণ:
DROP TRIGGER check_salary;
এটি check_salary
Trigger টি মুছে ফেলবে।
DB2 তে Trigger এর স্টেটাস চেক করতে, আপনি SYSIBM.SYSTABLES এবং SYSIBM.SYSTRIGGERS টেবিল ব্যবহার করতে পারেন।
উদাহরণ:
SELECT TRIGGERNAME, STATUS
FROM SYSIBM.SYSTRIGGERS
WHERE TABNAME = 'employees';
এটি employees
টেবিলের সাথে সম্পর্কিত Trigger-এর নাম এবং স্ট্যাটাস দেখাবে।
DB2 তে Triggers ডেটাবেসের মধ্যে স্বয়ংক্রিয়ভাবে একাধিক কাজ সম্পাদন করতে ব্যবহৃত হয়। BEFORE এবং AFTER Trigger ডেটাবেসের নির্দিষ্ট ইভেন্টের আগে বা পরে কার্যকরী হতে পারে। INSTEAD OF Trigger বিশেষভাবে ভিউ বা জটিল লজিকের জন্য ব্যবহৃত হয়। Trigger ডেটাবেসের পারফরম্যান্স এবং ইন্টিগ্রিটি বজায় রাখতে সহায়ক, এবং তা ALTER TRIGGER বা DROP TRIGGER কমান্ডের মাধ্যমে পরিচালনা করা যেতে পারে। Trigger ব্যবহারের মাধ্যমে DB2 ডেটাবেসের কার্যক্রমকে আরও সুরক্ষিত এবং কার্যকরী করা যায়।
common.read_more