Database Tutorials BEFORE এবং AFTER Triggers তৈরি গাইড ও নোট

292

Triggers হল বিশেষ ধরনের স্টোরড প্রোগ্রাম যা ডেটাবেসে একটি নির্দিষ্ট কার্যকলাপ (যেমন: INSERT, UPDATE, DELETE) ঘটে এমন কোনো ঘটনাকে সাড়া দিয়ে কার্যকর হয়। SQL ট্রিগার মূলত ডেটাবেসে অটোমেটিক্যালি কিছু কাজ করার জন্য ব্যবহৃত হয়, যেমন, ডেটা প্রক্রিয়াকরণের আগে বা পরে কিছু অতিরিক্ত কাজ সম্পন্ন করা।

BEFORE এবং AFTER ট্রিগার দুটি প্রধান ধরনের ট্রিগার, যা ডেটাবেসের কোনো অপারেশন সম্পন্ন হওয়ার আগে বা পরে চালিত হয়।

  • BEFORE Trigger: ডেটাবেসে কোন পরিবর্তন (INSERT, UPDATE, DELETE) ঘটানোর আগে এটি কার্যকর হয়।
  • AFTER Trigger: ডেটাবেসে কোন পরিবর্তন (INSERT, UPDATE, DELETE) ঘটানোর পরে এটি কার্যকর হয়।

নিচে BEFORE এবং AFTER ট্রিগার তৈরির সঠিক পদ্ধতি দেখানো হল:


১. BEFORE Trigger তৈরি

BEFORE Trigger ব্যবহার করা হয় যখন আমরা কোনো ডেটা ইনসার্ট, আপডেট বা ডিলিট করার আগে কিছু অতিরিক্ত কাজ সম্পন্ন করতে চাই। উদাহরণস্বরূপ, একটি salary কলামের মান UPDATE করার আগে নিশ্চিত করতে হবে যে তার নতুন মান একটি নির্দিষ্ট সীমার মধ্যে আছে কিনা।

Syntax:

CREATE TRIGGER trigger_name
BEFORE INSERT | UPDATE | DELETE
ON table_name
FOR EACH ROW
BEGIN
   -- Trigger body
END;

উদাহরণ:

ধরা যাক, আমরা একটি BEFORE INSERT ট্রিগার তৈরি করতে চাই যা নিশ্চিত করবে যে কোনো নতুন কর্মচারীর salary 1000-এর কম হবে না।

CREATE TRIGGER before_insert_employee
BEFORE INSERT
ON employees
FOR EACH ROW
BEGIN
    IF NEW.salary < 1000 THEN
        SET NEW.salary = 1000; -- Salary will be set to 1000 if it is less than 1000
    END IF;
END;

এখানে:

  • NEW.salary: এখানে NEW শব্দটি বর্তমান রেকর্ডের মানের প্রতিনিধিত্ব করে, কারণ এটি ইনসার্ট বা আপডেট করা হচ্ছে।
  • BEFORE INSERT: এটি নির্দেশ করে যে INSERT অপারেশনের আগে ট্রিগারটি কার্যকর হবে।

২. AFTER Trigger তৈরি

AFTER Trigger ব্যবহৃত হয় যখন কোনো ডেটা ইনসার্ট, আপডেট বা ডিলিট করার পরে অতিরিক্ত কোনো কার্যকলাপ সম্পাদন করতে হয়। এটি সাধারণত লগিং, অডিট ট্রেইল তৈরি, বা ডেটাবেসে অন্য টেবিল আপডেট করার জন্য ব্যবহৃত হয়।

Syntax:

CREATE TRIGGER trigger_name
AFTER INSERT | UPDATE | DELETE
ON table_name
FOR EACH ROW
BEGIN
   -- Trigger body
END;

উদাহরণ:

ধরা যাক, আমরা একটি AFTER UPDATE ট্রিগার তৈরি করতে চাই যা প্রতিটি আপডেটের পরে একটি log টেবিলকে আপডেট করবে, যাতে ওই কর্মচারীর salary পরিবর্তন হওয়ার রেকর্ড রাখা যায়।

CREATE TRIGGER after_update_salary
AFTER UPDATE
ON employees
FOR EACH ROW
BEGIN
    INSERT INTO salary_change_log (employee_id, old_salary, new_salary, change_date)
    VALUES (NEW.employee_id, OLD.salary, NEW.salary, NOW());
END;

এখানে:

  • NEW.salary: আপডেটের পর নতুন মান।
  • OLD.salary: আপডেটের আগের পুরনো মান।
  • NOW(): বর্তমান সময় বা তারিখ, যেটি change_date কলামে সন্নিবেশিত হবে।

BEFORE vs AFTER Trigger

AspectBEFORE TriggerAFTER Trigger
Execution Timeডেটাবেস অপারেশন (INSERT, UPDATE, DELETE) আগেডেটাবেস অপারেশন (INSERT, UPDATE, DELETE) পর
Use Caseডেটাবেস অপারেশনটি কার্যকর হওয়ার আগে পরিবর্তন বা যাচাই করা।ডেটাবেস অপারেশনটি সফলভাবে সম্পন্ন হওয়ার পর কোনো প্রক্রিয়া চালানো।
Exampleসঠিক ডেটা ইনসার্ট বা আপডেট নিশ্চিত করা (যেমন: ভ্যালিডেশন)।লগ তৈরি বা পরবর্তী পদক্ষেপ গ্রহণ (যেমন: অ্যাকাউন্টিং বা অডিট)।

Triggers ব্যবহার করার কিছু চ্যালেঞ্জ

  1. পারফরম্যান্স প্রভাব: ট্রিগার ব্যবহারের ফলে ডেটাবেসের কার্যক্ষমতা কিছুটা কমে যেতে পারে, বিশেষ করে যদি ট্রিগারগুলি জটিল বা বারবার কার্যকর হয়।
  2. ডিবাগিং: ট্রিগারগুলির ডিবাগ করা অনেক কঠিন হতে পারে, কারণ এগুলি ব্যাকগ্রাউন্ডে অটোমেটিকভাবে চলে।
  3. অপ্রত্যাশিত ফলাফল: ভুল ট্রিগার লজিক বা ইচ্ছামত ট্রিগার ব্যবহারে অপ্রত্যাশিত ডেটাবেস পরিবর্তন ঘটতে পারে।

উপসংহার:

BEFORE এবং AFTER ট্রিগার দুটি SQL ডেটাবেসের মধ্যে বিভিন্ন রকম অটোমেটিক কার্যকলাপ পরিচালনার জন্য ব্যবহৃত হয়। এটি ডেটাবেস ম্যানেজমেন্ট এবং প্রোগ্রামিংয়ে অত্যন্ত শক্তিশালী এবং কার্যকরী টুল, তবে এর সঠিক ব্যবহার ডেটাবেস পারফরম্যান্স ও নিরাপত্তা নিশ্চিত করার জন্য গুরুত্বপূর্ণ।

Content added By
Promotion

Are you sure to start over?

Loading...