Microsoft Technologies DML Triggers (AFTER, INSTEAD OF) তৈরি করা গাইড ও নোট

340

DML Triggers (Data Manipulation Language Triggers) হলো SQL Server এ ব্যবহৃত একটি গুরুত্বপূর্ণ ফিচার, যা INSERT, UPDATE, এবং DELETE অপারেশনগুলির পরে বা তাদের পরিবর্তে অটোমেটিকভাবে কার্যকর হয়। Trigger সাধারণত ডেটাবেসে ডেটা ম্যানিপুলেশন প্রক্রিয়াগুলি কন্ট্রোল করার জন্য ব্যবহৃত হয়, যেমন ডেটা ভ্যালিডেশন, অডিটিং, বা অন্য কোনো নির্দিষ্ট কাজ চালানো।

DML Trigger দুটি প্রধান ধরণের হতে পারে:

  • AFTER Trigger
  • INSTEAD OF Trigger

1. AFTER Trigger

AFTER Trigger একটি ট্রিগার যা নির্দিষ্ট DML অপারেশন (INSERT, UPDATE, DELETE) সম্পন্ন হওয়ার পর কার্যকর হয়। এটি ডেটাবেস টেবিলে ডেটা পরিবর্তন হওয়ার পরে এক্সিকিউট হয়। সাধারণত AFTER Trigger ব্যবহার করা হয় যখন আপনি নিশ্চিত হতে চান যে ডেটা সফলভাবে আপডেট বা ইনসার্ট হওয়ার পর কোনো নির্দিষ্ট কাজ হবে।

AFTER Trigger এর বৈশিষ্ট্য:

  • Post-Operation: Trigger শুধুমাত্র DML অপারেশন সম্পন্ন হওয়ার পরে কার্যকর হয়।
  • Modification: Trigger সাধারণত ডেটার মডিফিকেশন বা অনুমোদন না করে চলে, তবে প্রয়োজন হলে আপনি সংশোধন বা অর্ডার পরবর্তী কাজ করতে পারেন।
  • Multiple Operations: আপনি একাধিক AFTER Trigger একই টেবিলের জন্য ব্যবহার করতে পারেন, কিন্তু এগুলি সিরিয়ালি এক্সিকিউট হবে।

AFTER Trigger তৈরি করার সিনট্যাক্স:

CREATE TRIGGER trigger_name
ON table_name
AFTER INSERT, UPDATE, DELETE
AS
BEGIN
    -- Trigger Logic (Insert, Update, Delete এর পর কাজ করার কোড)
END;

উদাহরণ:

ধরা যাক, আমাদের একটি Employees টেবিল রয়েছে, এবং আমরা একটি AFTER INSERT Trigger তৈরি করতে চাই, যা নতুন কর্মী যোগ হওয়ার পর একটি লগ টেবিলে তথ্য সন্নিবেশ করবে।

CREATE TRIGGER trg_AfterEmployeeInsert
ON Employees
AFTER INSERT
AS
BEGIN
    INSERT INTO EmployeeAudit (EmployeeID, Action, ActionDate)
    SELECT EmployeeID, 'INSERT', GETDATE()
    FROM INSERTED;
END;

এখানে, AFTER INSERT Trigger তৈরি করা হয়েছে, যা নতুন কর্মী যোগ করার পর EmployeeAudit টেবিলে একটি লগ এন্ট্রি তৈরি করবে।


2. INSTEAD OF Trigger

INSTEAD OF Trigger হলো একটি ট্রিগার যা নির্দিষ্ট DML অপারেশন সম্পাদিত হওয়ার পরিবর্তে (instead of) কার্যকর হয়। এটি সাধারণত তখন ব্যবহার করা হয় যখন আপনি একটি নির্দিষ্ট অপারেশন সম্পন্ন করতে চান না এবং তার পরিবর্তে অন্য কোনো কাজ করতে চান। উদাহরণস্বরূপ, আপনি যদি কোনো INSERT, UPDATE, বা DELETE অপারেশন আটকাতে চান এবং সেই অপারেশনের পরিবর্তে কোনো অন্য কাজ করতে চান, তবে INSTEAD OF Trigger ব্যবহার করবেন।

INSTEAD OF Trigger এর বৈশিষ্ট্য:

  • Pre-Operation: Trigger অপারেশন শুরু হওয়ার পূর্বে কার্যকর হয়।
  • Modification Control: এটি মূল অপারেশন (INSERT, UPDATE, DELETE) নিষ্ক্রিয় করতে পারে এবং আপনার নির্দিষ্ট লজিক কার্যকর করতে পারে।
  • Custom Logic: আপনি যেকোনো কার্যকলাপ সম্পাদন করতে পারেন যা DML অপারেশনটির পরিবর্তে প্রয়োগ হবে।

INSTEAD OF Trigger তৈরি করার সিনট্যাক্স:

CREATE TRIGGER trigger_name
ON table_name
INSTEAD OF INSERT, UPDATE, DELETE
AS
BEGIN
    -- Trigger Logic (DML অপারেশনের পরিবর্তে কাজ করার কোড)
END;

উদাহরণ:

ধরা যাক, আমরা একটি INSTEAD OF DELETE Trigger তৈরি করতে চাই, যা DELETE অপারেশন না করে, পরিবর্তে ওই ডেটাকে আর্কাইভ টেবিলে স্থানান্তর করবে।

CREATE TRIGGER trg_InsteadOfDelete
ON Employees
INSTEAD OF DELETE
AS
BEGIN
    -- Archived Employee information moved to Archive table
    INSERT INTO EmployeeArchive (EmployeeID, Name, Department)
    SELECT EmployeeID, Name, Department
    FROM DELETED;
    
    -- Now, Delete the employee record
    DELETE FROM Employees
    WHERE EmployeeID IN (SELECT EmployeeID FROM DELETED);
END;

এখানে, INSTEAD OF DELETE Trigger তৈরি করা হয়েছে যা প্রথমে EmployeeArchive টেবিলে ডিলিট হওয়া কর্মীর তথ্য সংরক্ষণ করবে এবং তারপর Employees টেবিল থেকে ডেটা মুছে ফেলবে।


3. Trigger এবং Transaction Control

একটি ট্রিগারের মধ্যে Transaction Control (যেমন COMMIT, ROLLBACK) ব্যবহার করা যেতে পারে। AFTER Trigger সাধারণত Transaction শেষ হওয়ার পরে কার্যকর হয়, তবে INSTEAD OF Trigger এ আপনি একাধিক DML অপারেশন একসাথে করতে পারেন, যাতে পুরো প্রক্রিয়াটি একটি ট্রানজেকশনে সম্পন্ন হয়।

উদাহরণ:

CREATE TRIGGER trg_InsteadOfUpdate
ON Employees
INSTEAD OF UPDATE
AS
BEGIN
    BEGIN TRANSACTION;
    
    -- Custom Logic for Update Operation
    UPDATE Employees
    SET Salary = Salary * 1.10
    WHERE EmployeeID IN (SELECT EmployeeID FROM INSERTED);
    
    COMMIT TRANSACTION;
END;

এখানে, INSTEAD OF UPDATE Trigger তৈরি করা হয়েছে যা বেতনকে ১০% বাড়িয়ে দেয় এবং সমস্ত প্রক্রিয়াটি একটি ট্রানজেকশনের মধ্যে সম্পন্ন হয়।


4. Trigger এর ব্যবহারিক প্রয়োগ

  • Data Validation: Trigger ব্যবহার করে ডেটার বৈধতা পরীক্ষা করা, যেমন ইমেল ঠিকানা সঠিক ফরম্যাটে আছে কিনা বা বেতনটি একটি নির্দিষ্ট সীমার মধ্যে আছে কিনা।
  • Auditing: DML অপারেশনের লগ তৈরি করা, যেমন একটি ব্যবহারকারী যখন কোনো ডেটা পরিবর্তন করে, তখন তার একটি লগ এন্ট্রি তৈরি করা।
  • Preventing Invalid Data: DML অপারেশনের মাধ্যমে অবৈধ ডেটা প্রবেশ ঠেকানো, যেমন কোনো নির্দিষ্ট টেবিলে কিছু মান ছাড়া ইনসার্ট হওয়া রোধ করা।

সারাংশ

AFTER এবং INSTEAD OF Triggers ডেটাবেসে ডেটা ম্যানিপুলেশন অপারেশনগুলোর পর বা পরিবর্তে কার্যকর হতে পারে। AFTER Trigger সাধারণত DML অপারেশনের পরে কাজ করে, যেখানে আপনি কোনো পরিবর্তন করার আগে বা পরে কিছু কার্যকর করতে পারেন। অন্যদিকে, INSTEAD OF Trigger একটি DML অপারেশনকে আটকিয়ে, আপনার নির্দিষ্ট লজিক কার্যকর করে। Triggers ডেটাবেসের বিভিন্ন অটোমেশন এবং কাস্টম অপারেশন পরিচালনার জন্য ব্যবহৃত হয়, যা ডেটা ইন্টিগ্রিটি এবং পারফরম্যান্স উন্নত করতে সাহায্য করে।

Content added By
Promotion

Are you sure to start over?

Loading...