Triggers T-SQL (Transact-SQL)-এ একটি বিশেষ ধরনের অবজেক্ট যা ডেটাবেসে কোনো নির্দিষ্ট ঘটনার (insert, update, delete) পর স্বয়ংক্রিয়ভাবে কার্যকর হয়। এগুলি মূলত ডেটাবেসের স্বয়ংক্রিয়তা এবং ইন্টিগ্রিটি বজায় রাখতে ব্যবহৃত হয়।
AFTER Trigger এবং INSTEAD OF Trigger হল দুটি গুরুত্বপূর্ণ ধরনের Trigger, যা ডেটাবেস অপারেশন (যেমন INSERT, UPDATE, DELETE) সম্পাদনের পরে বা তার পরিবর্তে নির্দিষ্ট কার্যাবলী চালাতে ব্যবহৃত হয়।
1. AFTER Trigger
AFTER Trigger কোনো নির্দিষ্ট ডেটাবেস অপারেশন (insert, update, delete) সম্পাদিত হওয়ার পরে কার্যকর হয়। এটি সাধারণত ডেটাবেসের স্বয়ংক্রিয়তা বজায় রাখার জন্য ব্যবহৃত হয়, যেমন ডেটা লক করা, লগ ইনসার্ট করা বা সম্পর্কিত টেবিল আপডেট করা। AFTER Trigger ডেটাবেসে ডেটা পরিবর্তনের পর কার্যকর হয় এবং এটির পরিবর্তনগুলো ডেটাবেসে পূর্ববর্তী অবস্থানে প্রভাব ফেলতে পারে।
সিনট্যাক্স:
CREATE TRIGGER TriggerName
ON TableName
AFTER INSERT, UPDATE, DELETE
AS
BEGIN
-- Trigger-এর কার্যাবলী
END;
উদাহরণ (AFTER INSERT Trigger):
CREATE TRIGGER AfterInsertEmployee
ON Employees
AFTER INSERT
AS
BEGIN
DECLARE @EmployeeID INT;
SELECT @EmployeeID = EmployeeID FROM INSERTED;
PRINT 'Employee ' + CAST(@EmployeeID AS VARCHAR) + ' was added successfully.';
END;
এখানে:
AFTER INSERTTriggerEmployeesটেবিলের মধ্যে নতুন রেকর্ড ইনসার্ট হওয়ার পর কার্যকর হবে এবং ইনসার্ট হওয়া কর্মচারীর EmployeeID প্রিন্ট করবে।
AFTER Trigger এর ব্যবহার:
- Data Validation: ডেটা ইনসার্ট বা আপডেট হওয়ার পরে অন্য টেবিলের সঙ্গে সম্পর্কিত ডেটা আপডেট বা যাচাই করা।
- Audit Logging: ডেটাবেসের যেকোনো পরিবর্তনের পর লগ বা অডিট তথ্য সংরক্ষণ করা।
- Cascade Updates/Deletes: যখন একটি টেবিলের ডেটা পরিবর্তিত হয়, তখন সম্পর্কিত টেবিলগুলিতেও পরিবর্তন করা।
2. INSTEAD OF Trigger
INSTEAD OF Trigger যখন কোনো নির্দিষ্ট ডেটাবেস অপারেশন (insert, update, delete) চলে, তখন সেটি ডিফাইন করা INSTEAD OF Trigger দ্বারা প্রতিস্থাপিত হয়। অর্থাৎ, INSTEAD OF Trigger ঐ অপারেশনটি কার্যকর না করে নিজের ভিতরের কাস্টম কোড চালায়। এটি সাধারণত ব্যবহার করা হয় যখন আপনি ডেটাবেসের প্রকৃত অপারেশন প্রতিস্থাপন করতে চান, যেমন একটি ভিউ (view) থেকে ডেটা ইনসার্ট বা আপডেট করার সময়।
সিনট্যাক্স:
CREATE TRIGGER TriggerName
ON TableName
INSTEAD OF INSERT, UPDATE, DELETE
AS
BEGIN
-- Trigger-এর কার্যাবলী
END;
উদাহরণ (INSTEAD OF INSERT Trigger):
CREATE TRIGGER InsteadOfInsertEmployee
ON Employees
INSTEAD OF INSERT
AS
BEGIN
-- নতুন রেকর্ড ইনসার্ট হওয়ার আগে কিছু কাস্টম কাজ করা
PRINT 'INSERT operation is intercepted and replaced by custom action';
INSERT INTO Employees (EmployeeID, FirstName, LastName)
SELECT EmployeeID, FirstName, LastName FROM INSERTED;
END;
এখানে:
- INSTEAD OF INSERT Trigger Employees টেবিলে নতুন রেকর্ড ইনসার্ট হওয়ার পরিবর্তে একটি কাস্টম অপারেশন চালায় এবং তারপর ঐ রেকর্ডটি টেবিলটিতে ইনসার্ট করে।
INSTEAD OF Trigger এর ব্যবহার:
- View Modification: ভিউ (view)-এর মাধ্যমে টেবিলে INSERT, UPDATE, বা DELETE করা, যেখানে প্রকৃত ডেটাবেসে কাজ করা সম্ভব নয়।
- Complex Logic: জটিল লজিক প্রয়োগের মাধ্যমে ডেটাবেস অপারেশন প্রতিস্থাপন করা।
- Redirect Operations: কোনো নির্দিষ্ট অপারেশন করার পরিবর্তে অন্য অপারেশন চালানো।
AFTER এবং INSTEAD OF Trigger এর মধ্যে পার্থক্য
| Feature | AFTER Trigger | INSTEAD OF Trigger |
|---|---|---|
| Execution Time | ডেটাবেস অপারেশন শেষ হওয়ার পরে কার্যকর হয়। | ডেটাবেস অপারেশনটি শুরু হওয়ার আগে কার্যকর হয়। |
| Use Case | ডেটা পরিবর্তনের পর পরবর্তী কার্যাবলী বা লগিং। | ডেটাবেস অপারেশন প্রতিস্থাপন বা কাস্টম অপারেশন। |
| Impact on Original Operation | আসল অপারেশন কার্যকর হয়, শুধুমাত্র পরবর্তী কার্যাবলী হয়। | আসল অপারেশন বন্ধ হয়ে কাস্টম কোড চলে। |
| Common Use Cases | - Cascade updates- Audit logs- Referential integrity | - Views modification- Complex logic handling- Preventing certain operations |
| Behavior | ডেটাবেস পরিবর্তন আসলভাবে ঘটে। | ডেটাবেস অপারেশনগুলো প্রতিস্থাপিত হয়। |
Conclusion
- AFTER Trigger ডেটাবেসে একটি অপারেশন (insert, update, delete) শেষে কাজ করে এবং সাধারণত ডেটাবেসের রেফারেন্সিয়াল ইন্টিগ্রিটি বজায় রাখতে বা লগিং এবং অডিটিংয়ের জন্য ব্যবহৃত হয়।
- INSTEAD OF Trigger ডেটাবেস অপারেশন প্রতিস্থাপন করে এবং জটিল লজিক প্রয়োগে ব্যবহৃত হয়, বিশেষত যখন আপনি ভিউয়ের মধ্যে ডেটাবেসের পরিবর্তন করতে চান।
- দুটি Trigger ডেটাবেসের কার্যকলাপের ওপর নিয়ন্ত্রণ প্রদান করে, তবে তাদের ব্যবহারের উদ্দেশ্য এবং কার্যকারিতা ভিন্ন।
Read more