Trigger SQL Server এর একটি শক্তিশালী ফিচার, যা নির্দিষ্ট ডেটাবেস ইভেন্টের (যেমন INSERT, UPDATE, DELETE) সাথে সম্পর্কিত হয়ে স্বয়ংক্রিয়ভাবে একটি নির্দিষ্ট কাজ সম্পাদন করে। Audit এবং Logging হল দুইটি গুরুত্বপূর্ণ ব্যবহার যেখানে Trigger ব্যবহার করে ডেটাবেসে ট্র্যাকিং, পরিবর্তন ও ইভেন্টের ইতিহাস রেকর্ড করা হয়। এই গাইডে আমরা Trigger, Audit এবং Logging এর মৌলিক ধারণা, তাদের পার্থক্য এবং প্রয়োগ আলোচনা করব।
1. Trigger কী? (What is a Trigger?)
Trigger হল একটি বিশেষ ধরনের স্টোরড প্রোসিজার যা একটি নির্দিষ্ট ডেটাবেস ইভেন্টের (যেমন INSERT, UPDATE, DELETE) পরে স্বয়ংক্রিয়ভাবে চালিত হয়। ট্রিগারটি ডেটাবেসের টেবিল বা ভিউতে কোনো পরিবর্তন ঘটানোর আগে বা পরে কার্যকর হতে পারে।
SQL Server এ DML Triggers (Data Manipulation Language) এবং DDL Triggers (Data Definition Language) দুই প্রকার ট্রিগার রয়েছে।
- DML Triggers:
INSERT,UPDATE, বাDELETEএর মাধ্যমে ডেটাবেস টেবিলের ডেটায় পরিবর্তন হলে চালিত হয়। - DDL Triggers: ডেটাবেস অবজেক্ট যেমন টেবিল বা ভিউ তৈরি, পরিবর্তন বা মুছে ফেলার ক্ষেত্রে ট্রিগার হয়।
1.1. Trigger তৈরি করার উদাহরণ
ধরা যাক, আপনি একটি Employee টেবিলের উপর একটি AFTER INSERT ট্রিগার তৈরি করতে চান, যা একটি লগ টেবিলে নতুন কর্মচারী যুক্ত হওয়ার তথ্য রেকর্ড করবে:
CREATE TRIGGER trg_AfterEmployeeInsert
ON Employee
AFTER INSERT
AS
BEGIN
DECLARE @EmployeeID INT, @FirstName NVARCHAR(50), @LastName NVARCHAR(50);
SELECT @EmployeeID = EmployeeID, @FirstName = FirstName, @LastName = LastName
FROM INSERTED; -- INSERTED ভার্চুয়াল টেবিল থেকে নতুন ইনসার্ট হওয়া ডেটা নিয়ে আসা
INSERT INTO EmployeeAudit (EmployeeID, FirstName, LastName, Action, ActionDate)
VALUES (@EmployeeID, @FirstName, @LastName, 'INSERT', GETDATE()); -- লগ টেবিলে ইনসার্ট তথ্য যোগ করা
END;
GO
এটি একটি AFTER INSERT ট্রিগার তৈরি করবে, যা নতুন কর্মচারী যোগ হলে EmployeeAudit নামক টেবিলে এই কর্মচারীর তথ্য লগ করবে।
2. Audit কী? (What is Audit?)
Audit হল একটি প্রক্রিয়া যেখানে একটি ডেটাবেসে ঘটে যাওয়া সমস্ত কার্যকলাপের তথ্য সঠিকভাবে ট্র্যাক এবং রেকর্ড করা হয়। সাধারণত, Audit ব্যবহৃত হয় ডেটা অ্যাক্সেস, ডেটা ম্যানিপুলেশন, এবং অন্যান্য কার্যকলাপের ইতিহাস রেকর্ড করার জন্য।
এটি নিশ্চিত করে যে সিস্টেমে সব ধরনের পরিবর্তন পর্যবেক্ষণ এবং রিভিউ করা সম্ভব হয়। Audit Trails তৈরি করা হয় যেগুলি ডেটা ম্যানিপুলেশন বা অ্যাক্সেসের বিস্তারিত ইতিহাস প্রদান করে।
2.1. Audit এর জন্য Trigger ব্যবহার
Trigger ব্যবহারের মাধ্যমে আপনি ডেটাবেসে ঘটে যাওয়া বিভিন্ন পরিবর্তন বা কার্যকলাপের একটি অডিট ট্রেইল তৈরি করতে পারেন। এর মাধ্যমে আপনি যেকোনো ডেটাবেসের INSERT, UPDATE, DELETE অপারেশনের পর তথ্য রেকর্ড করে রাখতে পারেন। এই রেকর্ডগুলো সাধারণত একটি লগ টেবিলে সংরক্ষণ করা হয়।
উদাহরণস্বরূপ, আপনি যদি টেবিল Employee তে কোনো পরিবর্তন হলে তা অডিট করতে চান, তাহলে একটি ট্রিগার তৈরি করতে পারেন যেটি AuditLog টেবিলে ডেটা লিখবে।
CREATE TRIGGER trg_AuditEmployeeChanges
ON Employee
FOR INSERT, UPDATE, DELETE
AS
BEGIN
DECLARE @Action NVARCHAR(10), @EmployeeID INT, @FirstName NVARCHAR(50), @LastName NVARCHAR(50);
IF EXISTS (SELECT * FROM INSERTED)
BEGIN
SET @Action = 'INSERT';
SELECT @EmployeeID = EmployeeID, @FirstName = FirstName, @LastName = LastName FROM INSERTED;
END
ELSE IF EXISTS (SELECT * FROM DELETED)
BEGIN
SET @Action = 'DELETE';
SELECT @EmployeeID = EmployeeID, @FirstName = FirstName, @LastName = LastName FROM DELETED;
END
INSERT INTO AuditLog (EmployeeID, FirstName, LastName, Action, ActionDate)
VALUES (@EmployeeID, @FirstName, @LastName, @Action, GETDATE());
END;
GO
এই উদাহরণে, যদি Employee টেবিলে কোনো INSERT, UPDATE অথবা DELETE অপারেশন হয়, তখন ট্রিগারটি AuditLog টেবিলে সেই পরিবর্তন রেকর্ড করে রাখবে।
3. Logging কী? (What is Logging?)
Logging হল একটি পদ্ধতি যার মাধ্যমে সিস্টেম বা অ্যাপ্লিকেশনের বিভিন্ন ইভেন্ট এবং কার্যকলাপ রেকর্ড করা হয়। এটি সাধারণত Error Logging, Event Logging, এবং Activity Logging-এর মাধ্যমে ব্যবহৃত হয়।
এটা আপনাকে সিস্টেমের স্থিতি এবং কার্যকারিতা ট্র্যাক করতে সাহায্য করে, যেমন ব্যবহারকারী অ্যাক্সেস, ডেটা পরিবর্তন ইত্যাদি। Logging ডেটাবেসের মধ্যে ইভেন্ট বা কার্যকলাপের ইতিহাস রেকর্ড করার জন্য অনেক সময় Trigger ব্যবহৃত হয়।
3.1. Logging এর জন্য Trigger ব্যবহার
ট্রিগার ব্যবহার করে আপনি ডেটাবেসে গুরুত্বপূর্ণ ইভেন্টগুলো লোগ করতে পারেন, যেমন যেকোনো INSERT, UPDATE, বা DELETE অপারেশনের সময় লগ রেকর্ড করা। এই লগগুলি সাধারণত একটি আলাদা লগ টেবিলে সংরক্ষিত হয়, যা পরে অডিট বা ডিবাগিংয়ের কাজে ব্যবহার করা যায়।
3.1.1. Logging উদাহরণ
ধরা যাক, আপনি Customer টেবিলের উপর একটি লগ ট্রিগার তৈরি করতে চান, যা যেকোনো পরিবর্তনের লগ রেকর্ড করবে:
CREATE TRIGGER trg_LogCustomerChanges
ON Customer
FOR INSERT, UPDATE, DELETE
AS
BEGIN
DECLARE @Action NVARCHAR(10), @CustomerID INT, @Name NVARCHAR(100);
IF EXISTS (SELECT * FROM INSERTED)
BEGIN
SET @Action = 'INSERT';
SELECT @CustomerID = CustomerID, @Name = Name FROM INSERTED;
END
ELSE IF EXISTS (SELECT * FROM DELETED)
BEGIN
SET @Action = 'DELETE';
SELECT @CustomerID = CustomerID, @Name = Name FROM DELETED;
END
INSERT INTO ChangeLog (Action, CustomerID, CustomerName, ChangeDate)
VALUES (@Action, @CustomerID, @Name, GETDATE());
END;
GO
এই ট্রিগারটি Customer টেবিলে যেকোনো INSERT, UPDATE, বা DELETE ঘটলে, তা ChangeLog টেবিলে লগ রেকর্ড করবে। এতে Action (কী ধরনের পরিবর্তন), CustomerID, CustomerName, এবং ChangeDate রেকর্ড হবে।
4. Trigger, Audit এবং Logging এর মধ্যে পার্থক্য
| পয়েন্ট | Trigger | Audit | Logging |
|---|---|---|---|
| মূল উদ্দেশ্য | ডেটাবেস ইভেন্টের পরে স্বয়ংক্রিয় কাজ করা। | ডেটাবেসের পরিবর্তন এবং কার্যকলাপ ট্র্যাক করা। | সিস্টেম বা অ্যাপ্লিকেশনের ইভেন্ট রেকর্ড করা। |
| ব্যবহার | ডেটাবেস ইভেন্টগুলির উপর নির্ভর করে কাজ করতে। | সিস্টেমের ইতিহাস ট্র্যাক এবং রেকর্ড করার জন্য। | ডেটাবেস বা অ্যাপ্লিকেশনের কার্যকলাপের বিস্তারিত রেকর্ড রাখতে। |
| রেকর্ড ফর্মেট | সাধারণত টেবিল বা ভিউতে রেকর্ড যুক্ত করা। | লগ টেবিল বা অডিট ট্রেইলে তথ্য সংরক্ষণ করা। | সিস্টেমে ঘটে যাওয়া ইভেন্টগুলো রেকর্ড করা। |
Trigger, Audit এবং Logging তিনটি একসাথে ব্যবহার করে, আপনি আপনার ডেটাবেস সিস্টেমের কার্যকলাপ সহজেই ট্র্যাক করতে এবং প্রয়োজনীয় সময় তথ্য পুনরুদ্ধার করতে পারবেন।
Read more