Triggers এবং Stored Procedures SQL এর গুরুত্বপূর্ণ বৈশিষ্ট্য, কিন্তু তাদের কাজ এবং ব্যবহারের উদ্দেশ্য আলাদা। নিচে এই দুটি কনসেপ্টের মধ্যে প্রধান পার্থক্য তুলে ধরা হল:
১. Triggers:
Trigger হলো একটি বিশেষ ধরনের SQL প্রোগ্রাম যা কোনো নির্দিষ্ট ইভেন্ট (যেমন, INSERT, UPDATE, বা DELETE) ঘটলে স্বয়ংক্রিয়ভাবে কার্যকর হয়। এটি ডেটাবেসে কোনো পরিবর্তন ঘটানোর আগে বা পরে কিছু কার্যক্রম সম্পাদন করতে ব্যবহৃত হয়। Trigger সাধারণত ডেটাবেস ইভেন্ট দ্বারা ট্রিগার হয় এবং সেগুলি স্বয়ংক্রিয়ভাবে চলতে থাকে, অর্থাৎ ব্যবহারকারী বা অ্যাপ্লিকেশন দ্বারা সরাসরি চালানো হয় না।
Triggers এর বৈশিষ্ট্য:
- স্বয়ংক্রিয় কার্যকলাপ: Trigger স্বয়ংক্রিয়ভাবে একটি ইভেন্টের পরে অথবা আগে চলে (যেমন
AFTER INSERT,BEFORE DELETE)। - ডেটাবেস স্তরে কাজ করে: Trigger শুধুমাত্র ডেটাবেসের মধ্যে ঘটে এমন কার্যকলাপের জন্য ব্যবহৃত হয় এবং সাধারণত টেবিল বা ভিউয়ের ওপর নির্দিষ্ট হয়।
- নির্দিষ্ট ইভেন্টের উপর নির্ভরশীল: Trigger গুলি বিশেষ একটি ইভেন্ট (যেমন:
INSERT,UPDATE,DELETE) সম্পাদন করার সময় কার্যকর হয়।
Trigger উদাহরণ:
ধরা যাক, আমরা employees টেবিলে একটি Trigger তৈরি করতে চাই যাতে একটি নতুন কর্মচারী যুক্ত করার পরে একটি লগ টেবিলের মধ্যে তথ্য ঢোকানো হয়:
CREATE TRIGGER after_employee_insert
AFTER INSERT ON employees
FOR EACH ROW
BEGIN
INSERT INTO employee_log (employee_id, action, action_time)
VALUES (NEW.employee_id, 'INSERT', NOW());
END;
এখানে:
- AFTER INSERT:
employeesটেবিলে কোনো নতুন রেকর্ড যোগ হলে Trigger টি কার্যকর হবে। - NEW.employee_id: নতুন রেকর্ডের
employee_idকলামটি নেওয়া হবে।
২. Stored Procedure:
Stored Procedure একটি প্রি-কম্পাইল্ড SQL প্রোগ্রাম বা কোডের সঙ্কলন যা একাধিক SQL স্টেটমেন্ট বা কার্যকলাপ একত্রে সম্পাদন করতে ব্যবহৃত হয়। একটি Stored Procedure বিভিন্ন কাজের জন্য তৈরি করা যেতে পারে, যেমন ডেটাবেসে ডেটা আপডেট, ইনসার্ট বা সিলেক্ট করা। এটি ডেটাবেসে সংরক্ষিত থাকে এবং যেকোনো সময় প্রয়োজনে চালানো যেতে পারে।
Stored Procedure এর বৈশিষ্ট্য:
- স্বাধীন কার্যক্রম: Stored Procedure তৈরি করা হয় ডেটাবেসের মধ্যে একটি নির্দিষ্ট কাজ বা সেট কার্য সম্পাদনের জন্য।
- প্যারামিটার ব্যবহার: Stored Procedure এ ইনপুট এবং আউটপুট প্যারামিটার থাকতে পারে যা প্রোগ্রামটির নমনীয়তা বৃদ্ধি করে।
- অনুশীলনযোগ্য: এটি একবার তৈরি করার পর বহুবার চালানো যায়।
Stored Procedure উদাহরণ:
ধরা যাক, আমাদের একটি Stored Procedure তৈরি করতে চাই, যা নির্দিষ্ট department_id অনুযায়ী কর্মচারীদের তথ্য বের করবে:
CREATE PROCEDURE get_employees_by_department(dept_id INT)
BEGIN
SELECT first_name, last_name
FROM employees
WHERE department_id = dept_id;
END;
এখানে:
dept_idহল ইনপুট প্যারামিটার, যা স্টোরড প্রোসিডিউরটিকে কোনো নির্দিষ্ট বিভাগ অনুযায়ী কর্মচারীদের তথ্য নিয়ে আসতে সহায়তা করে।
Triggers এবং Stored Procedure এর মধ্যে পার্থক্য:
| বিশেষত্ব | Trigger | Stored Procedure |
|---|---|---|
| কার্যকর হওয়া | ডেটাবেসে নির্দিষ্ট ইভেন্টের উপর নির্ভরশীল (যেমন INSERT, UPDATE, DELETE) | নির্দিষ্টভাবে কল বা চালানোর মাধ্যমে কার্যকর হয় |
| স্বয়ংক্রিয়তা | স্বয়ংক্রিয়ভাবে কার্যকর হয় যখন ইভেন্ট ঘটে | ম্যানুয়ালি কল করতে হয় বা নির্দিষ্ট সময়ের মধ্যে চলানো হয় |
| প্যারামিটার | সাধারণত প্যারামিটার নেওয়ার ক্ষমতা নেই | ইনপুট এবং আউটপুট প্যারামিটার থাকতে পারে |
| ব্যবহার | ডেটাবেসের নির্দিষ্ট ইভেন্টে স্বয়ংক্রিয়ভাবে কিছু করতে | একাধিক SQL স্টেটমেন্ট একত্রে সম্পাদন করার জন্য ব্যবহৃত হয় |
| প্রক্রিয়া | ইভেন্টের পরে বা আগে কিছু কাজ করার জন্য ব্যবহৃত | কমপ্লেক্স টাস্ক, একাধিক স্টেটমেন্ট চালানোর জন্য ব্যবহৃত |
| প্রয়োজনীয়তা | প্রোগ্রাম চালানোর জন্য কোন ম্যানুয়াল ইনপুটের প্রয়োজন নেই | ম্যানুয়ালি স্টোরড প্রোসিডিউর কল করতে হয় |
উপসংহার:
- Triggers ব্যবহার করা হয় যখন ডেটাবেসে একটি নির্দিষ্ট ইভেন্ট ঘটে এবং এর সাথে কিছু অটোমেটিক কাজ করতে হয় (যেমন, একটি রেকর্ড ইনসার্ট করার পরে লগিং করা)।
- Stored Procedures ব্যবহার করা হয় যখন আপনি একাধিক SQL কুইরি বা কার্যক্রম একসাথে চালাতে চান, এবং এগুলো ম্যানুয়ালি কল করতে হয়।
প্রত্যেকটি তাদের নিজ নিজ উদ্দেশ্য পূরণের জন্য উপযুক্ত এবং ব্যবহৃত হয়।