Triggers হল ডেটাবেসের অবজারভেবল অবস্থা বা ডেটাবেসের মধ্যে কিছু নির্দিষ্ট পরিবর্তন ঘটলেই স্বয়ংক্রিয়ভাবে কার্যকর হওয়া প্রোগ্রাম। উদাহরণস্বরূপ, আপনি একটি ট্রিগার সেট করতে পারেন যা ডেটাবেসে একটি নতুন রেকর্ড ইনসার্ট হলে বা কোনো রেকর্ড আপডেট হলে কিছু নির্দিষ্ট কাজ সম্পাদন করবে।
Apache Derby ডেটাবেসে Triggers তৈরি ও ব্যবহার করার জন্য SQL কুয়েরি ব্যবহৃত হয়, যেখানে BEFORE বা AFTER কিওয়ার্ড দ্বারা ট্রিগারের টাইপ নির্ধারণ করা হয়।
INSERT
, UPDATE
, বা DELETE
) হওয়ার আগেই ট্রিগারটি কার্যকর হয়। এই ধরনের ট্রিগার ডেটা পরিবর্তনের আগে কিছু যাচাই বা পরিবর্তন করতে ব্যবহৃত হয়।Trigger তৈরি করার সাধারণ সিনট্যাক্স:
CREATE TRIGGER trigger_name
trigger_time trigger_event
ON table_name
[FOR EACH ROW]
[WHEN condition]
BEGIN
-- Trigger action (SQL statements)
END;
trigger_name
: ট্রিগারের নাম।trigger_time
: BEFORE
বা AFTER
– ট্রিগারটি কোন সময় কার্যকর হবে।trigger_event
: INSERT
, UPDATE
, বা DELETE
– ট্রিগারটি কোন অপারেশন ঘটলে কার্যকর হবে।table_name
: টেবিলের নাম যেখানে ট্রিগারটি প্রযোজ্য হবে।condition
: (ঐচ্ছিক) – ট্রিগারটি একটি নির্দিষ্ট শর্তে চালানোর জন্য।trigger action
: ট্রিগারের কাজ যা SQL স্টেটমেন্ট দ্বারা নির্ধারিত হয়।ধরা যাক, আমাদের একটি টেবিল রয়েছে যেটি employees
নামে পরিচিত। আমরা একটি BEFORE INSERT Trigger তৈরি করতে চাই, যাতে ইনসার্ট করার আগে কোনো salary
কলামের মান চেক করা হয় এবং তা ০ এর কম না হয়।
CREATE TRIGGER check_salary_before_insert
BEFORE INSERT
ON employees
FOR EACH ROW
WHEN (NEW.salary < 0)
BEGIN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Salary cannot be negative';
END;
এই ট্রিগারটি তখনই কাজ করবে যখন নতুন রেকর্ড ইনসার্ট করার আগে salary
এর মান নেতিবাচক (negative) হবে, এবং তখন একটি ত্রুটি বার্তা প্রদর্শিত হবে।
ধরা যাক, একটি sales
টেবিল রয়েছে, এবং আমরা একটি AFTER INSERT Trigger তৈরি করতে চাই যাতে, যখনই নতুন কোনো বিক্রয়ের তথ্য ইনসার্ট করা হয়, তখন সেলস রিপোর্ট টেবিল আপডেট হয়।
CREATE TRIGGER update_sales_report_after_insert
AFTER INSERT
ON sales
FOR EACH ROW
BEGIN
UPDATE sales_report
SET total_sales = total_sales + NEW.amount
WHERE report_date = CURRENT_DATE;
END;
এই ট্রিগারটি তখনই কার্যকর হবে যখন নতুন বিক্রয়ের রেকর্ড ইনসার্ট করা হবে এবং এটি sales_report
টেবিলের total_sales
কলাম আপডেট করবে, যেখানে রিপোর্টের তারিখটি বর্তমান তারিখের সমান হবে।
ধরা যাক, একটি students
টেবিল রয়েছে, এবং আমরা একটি AFTER UPDATE Trigger তৈরি করতে চাই, যাতে student_score
কলামের মান আপডেট করার পর একটি লগ টেবিল এ পরিবর্তনটি রেকর্ড করা হয়।
CREATE TRIGGER log_score_update_after_update
AFTER UPDATE
ON students
FOR EACH ROW
WHEN (NEW.score <> OLD.score)
BEGIN
INSERT INTO score_log (student_id, old_score, new_score, update_time)
VALUES (NEW.id, OLD.score, NEW.score, CURRENT_TIMESTAMP);
END;
এই ট্রিগারটি তখনই কার্যকর হবে যখন কোনো ছাত্রের স্কোর আপডেট হবে এবং এটি সেই পরিবর্তনটি score_log
টেবিলে লগ করবে।
Apache Derby তে ট্রিগার তৈরি করা একটি শক্তিশালী ফিচার যা ডেটাবেসের কার্যক্রমকে স্বয়ংক্রিয়ভাবে পরিচালনা করতে সাহায্য করে। এটি বিভিন্ন ডেটাবেস অপারেশন যেমন INSERT
, UPDATE
, এবং DELETE
এর সাথে সংযুক্ত করা যেতে পারে। ট্রিগার ব্যবহার করে আপনি ডেটাবেসের অবস্থা সঠিকভাবে ম্যানেজ করতে এবং ডেটাবেসে কোনো পরিবর্তন ঘটলে তা কার্যকরভাবে ট্র্যাক করতে পারেন।
common.read_more