Stored Procedures এবং Triggers হল MySQL বা MariaDB ডাটাবেসের দুটি গুরুত্বপূর্ণ ফিচার যা ডাটাবেসের কার্যক্রম স্বয়ংক্রিয়ভাবে পরিচালনা করতে সহায়তা করে। এগুলি ডাটাবেসে কার্যকরী কোড সংরক্ষণ এবং নির্দিষ্ট কার্যাবলী সম্পাদনের জন্য ব্যবহৃত হয়। এখানে Stored Procedures এবং Triggers-এর উদাহরণ দেওয়া হল।
১. Stored Procedure (স্টোরড প্রোসিডিউর)
Stored Procedure হল একটি প্রি-কম্পাইলড SQL কোড যা ডাটাবেসে সংরক্ষিত থাকে এবং প্রয়োজনে তা পুনরায় কার্যকরী করা যায়। এটি একাধিক SQL স্টেটমেন্ট বা অপারেশন সম্পাদন করতে পারে এবং প্রোগ্রামেবল কার্যাবলী সরবরাহ করে।
Stored Procedure তৈরির উদাহরণ:
কেস ১: একটি ব্যবহারকারীর তথ্য আপডেট করার জন্য Stored Procedure
ধরা যাক, আপনি একটি users টেবিল তৈরি করেছেন, যেখানে ব্যবহারকারীদের নাম, ইমেইল এবং বয়স রয়েছে। আপনার একটি Stored Procedure দরকার যা ব্যবহারকারীর বয়স আপডেট করবে।
টেবিল স্ট্রাকচার:
CREATE TABLE users (
user_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100),
age INT
);
Stored Procedure তৈরি:
DELIMITER
DELIMITER ;
এখানে:
update_ageহলো Stored Procedure এর নাম।user_emailএবংnew_ageইনপুট প্যারামিটার হিসেবে গ্রহণ করা হচ্ছে।usersটেবিলের নির্দিষ্ট ব্যবহারকারীর বয়স আপডেট করতে এটি কাজ করবে।
Stored Procedure কল করা:
CALL update_age('example@example.com', 30);
এটি example@example.com ইমেইল ওয়ালা ব্যবহারকারীর বয়স ৩০ আপডেট করবে।
২. Trigger (ট্রিগার)
Trigger একটি বিশেষ ধরনের স্টোরড প্রোসিডিউর যা স্বয়ংক্রিয়ভাবে কার্যকর হয় যখন ডাটাবেসে নির্দিষ্ট কোনো ইভেন্ট ঘটে (যেমন INSERT, UPDATE বা DELETE)। ট্রিগার সাধারণত ডেটা ইন্টেগ্রিটি এবং স্বয়ংক্রিয় কাজের জন্য ব্যবহৃত হয়।
Trigger তৈরির উদাহরণ:
কেস ২: ডেটা ইনসার্ট করার পর লগ রেকর্ড করা Trigger
ধরা যাক, আপনি একটি audit_log টেবিল তৈরি করেছেন যা প্রতিটি ইনসার্টের পরে লগ রেকর্ড করবে।
টেবিল স্ট্রাকচার:
CREATE TABLE users (
user_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100),
age INT
);
CREATE TABLE audit_log (
log_id INT AUTO_INCREMENT PRIMARY KEY,
action_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
action VARCHAR(50),
user_id INT
);
এখানে, users টেবিলে নতুন রেকর্ড ইনসার্ট করার পর audit_log টেবিলে একটি লগ রেকর্ড হবে।
Trigger তৈরি:
DELIMITER
DELIMITER ;
এখানে:
AFTER INSERT: এটি নির্দেশ করে যে ইনসার্ট করার পর এই Trigger কার্যকর হবে।NEW.user_id: এটি নতুন ইনসার্ট হওয়া রেকর্ডেরuser_idফিল্ডের মান।
Trigger এর কার্যকারিতা:
এখন, যখন আপনি users টেবিলে একটি নতুন রেকর্ড ইনসার্ট করবেন, তখন স্বয়ংক্রিয়ভাবে audit_log টেবিলে একটি লগ রেকর্ড তৈরি হবে।
নতুন রেকর্ড ইনসার্ট করা:
INSERT INTO users (name, email, age) VALUES ('John Doe', 'john.doe@example.com', 28);
এটি users টেবিলে একটি নতুন রেকর্ড ইনসার্ট করার পর audit_log টেবিলেও একটি লগ রেকর্ড তৈরি করবে।
Stored Procedures এবং Triggers এর মধ্যে পার্থক্য
| বিষয় | Stored Procedure | Trigger |
|---|---|---|
| সংজ্ঞা | প্রি-কম্পাইলড SQL কোড যা কার্যকর করা হয় প্রয়োজনে। | ডাটাবেসে একটি ইভেন্ট ঘটলে স্বয়ংক্রিয়ভাবে কার্যকর হয়। |
| এটি কখন কার্যকর হয়? | ম্যানুয়ালি কল করা হলে। | একটি নির্দিষ্ট ইভেন্ট (INSERT, UPDATE, DELETE) ঘটলে। |
| ব্যবহার | একাধিক SQL অপারেশন সম্পাদন করার জন্য। | ডেটা ইন্টিগ্রিটি নিশ্চিত করা এবং স্বয়ংক্রিয় কাজ করার জন্য। |
| প্রতিরোধ | কোডটি পুনরায় চালাতে হতে পারে। | ট্রিগারটি একবার কনফিগার হলে স্বয়ংক্রিয়ভাবে কাজ করে। |
| ফলাফল | একটি মান (রিটার্ন) প্রদান করতে পারে। | কোনো মান রিটার্ন করে না, বরং কিছু কার্যক্রম সম্পাদন করে। |
সারাংশ
- Stored Procedures এবং Triggers দুটি ডাটাবেসে কার্যকরী প্রোগ্রামেবল ইউনিট যা কার্যাবলী স্বয়ংক্রিয় করতে ব্যবহৃত হয়।
- Stored Procedures ব্যবহারকারীর নির্দেশ অনুযায়ী কার্যকর হয় এবং একাধিক SQL অপারেশন সম্পাদন করতে পারে, যেমন ডেটা আপডেট বা গণনা করা।
- Triggers তখন কার্যকর হয় যখন কোনো নির্দিষ্ট ইভেন্ট ঘটতে থাকে (যেমন ইনসার্ট বা আপডেট)। এটি ডেটাবেসের এক্সটেনশনের মতো কাজ করে, যেখানে ইভেন্ট ঘটার পরে স্বয়ংক্রিয়ভাবে কার্যক্রম শুরু হয়।
এগুলো ডাটাবেস ম্যানেজমেন্টের জন্য গুরুত্বপূর্ণ টুল এবং ডাটাবেসের কার্যাবলী আরও স্মার্ট এবং সহজ করার জন্য ব্যবহৃত হয়।
Read more