Database Tutorials Complex Triggers তৈরি করা গাইড ও নোট

329

Triggers হল একটি ডেটাবেস ফিচার যা একটি নির্দিষ্ট ইভেন্ট (যেমন INSERT, UPDATE, বা DELETE) ঘটানোর সাথে সাথে একটি প্রোগ্রাম বা ফাংশনকে স্বয়ংক্রিয়ভাবে কার্যকর করে। PostgreSQL এ Complex Triggers তৈরি করা হতে পারে যা একাধিক কাজ সম্পাদন করে, যেমন ডেটা যাচাই, লগিং, বা অন্য টেবিলে ডেটা ইনসার্ট করা। Triggers এর মাধ্যমে আপনি ডেটাবেসের কার্যক্রমকে আরও কার্যকর এবং শক্তিশালী করতে পারেন।

Triggers কি?

একটি Trigger হল একটি ডেটাবেস অবজেক্ট যা একটি নির্দিষ্ট ইভেন্টের ভিত্তিতে স্বয়ংক্রিয়ভাবে চালিত হয়। উদাহরণস্বরূপ, একটি AFTER INSERT ট্রিগার ব্যবহার করে আপনি একটি নতুন রেকর্ড ইনসার্ট হওয়ার পর কোনো নির্দিষ্ট অ্যাকশন চালাতে পারেন। ট্রিগার সাধারণত একটি ফাংশনকে ট্রিগার করে, যা সেই ইভেন্টে কার্যকর হয়।

Trigger Types

PostgreSQL এ মূলত তিনটি ধরণের ট্রিগার পাওয়া যায়:

  1. BEFORE Trigger: একটি ট্রানজেকশন কমপ্লিট হওয়ার আগে কাজ করে। এই ট্রিগারটি ডেটা পরিবর্তন করার জন্য ব্যবহার করা হয়।
  2. AFTER Trigger: একটি ট্রানজেকশন সফলভাবে সম্পন্ন হওয়ার পরে কাজ করে। এটি ডেটাবেসের অপরিবর্তিত অংশে কার্যকর হয়।
  3. INSTEAD OF Trigger: এটি views এর উপর ব্যবহৃত হয় এবং নির্দিষ্ট অপারেশনের পরিবর্তে অন্য কোনো অপারেশন চালায়।

Complex Trigger তৈরি করার প্রক্রিয়া

Complex Triggers তৈরি করার জন্য আপনাকে প্রথমে একটি trigger function তৈরি করতে হবে এবং তারপর সেই ফাংশনটি একটি trigger এর মাধ্যমে প্রয়োগ করতে হবে।

Step 1: Trigger Function তৈরি করা

Trigger function হল সেই ফাংশন যা ট্রিগার হওয়ার পর এক বা একাধিক কার্যকলাপ সম্পাদন করে। একটি trigger function একটি PL/pgSQL ফাংশন হতে পারে।

Trigger Function উদাহরণ: এখানে আমরা একটি trigger function তৈরি করব যা যখন একটি orders টেবিলে নতুন ইনভয়েস ইনসার্ট হবে, তখন একটি audit_log টেবিলে লগ সংরক্ষণ করবে।

CREATE OR REPLACE FUNCTION log_new_order() 
RETURNS TRIGGER AS BEGININSERTINTOauditlog(action,tablename,actiontime)VALUES('INSERT','orders',CURRENTTIMESTAMP);RETURNNEW;END;
BEGIN
    INSERT INTO audit_log (action, table_name, action_time)
    VALUES ('INSERT', 'orders', CURRENT_TIMESTAMP);
    RETURN NEW;
END;
 LANGUAGE plpgsql;

এখানে, log_new_order নামের একটি trigger function তৈরি করা হয়েছে যা audit_log টেবিলে একটি লাইন যোগ করবে যখন নতুন অর্ডার ইনসার্ট হবে।

Step 2: Trigger তৈরি করা

Trigger function তৈরি হওয়ার পর, এখন আপনাকে একটি trigger তৈরি করতে হবে যা নির্দিষ্ট ইভেন্টের পর ফাংশনটি চালাবে।

Trigger উদাহরণ: এখন আমরা একটি AFTER INSERT trigger তৈরি করব যা orders টেবিলে নতুন রেকর্ড ইনসার্ট হলে log_new_order ফাংশনটি কার্যকর করবে।

CREATE TRIGGER new_order_trigger
AFTER INSERT ON orders
FOR EACH ROW
EXECUTE FUNCTION log_new_order();

এটি orders টেবিলের জন্য একটি AFTER INSERT trigger তৈরি করেছে। যখনই orders টেবিলে নতুন কোনো রেকর্ড ইনসার্ট হবে, তখন log_new_order ফাংশনটি চালানো হবে এবং একটি নতুন লগ audit_log টেবিলে সন্নিবেশিত হবে।


Complex Trigger উদাহরণ:

ধরা যাক, আমাদের employees এবং salaries নামের দুটি টেবিল রয়েছে। যখন একটি কর্মচারীর salary পরিবর্তন হবে, তখন সেই পরিবর্তন audit_log টেবিলে লগ করা হবে। এই উদাহরণে, আমরা BEFORE UPDATE trigger ব্যবহার করব যা নিশ্চিত করবে যে, salary এর আগের এবং নতুন মান audit_log টেবিলে সন্নিবেশিত হবে।

  1. Step 1: Trigger Function তৈরি করা

    প্রথমে, একটি trigger function তৈরি করতে হবে যা আগের এবং নতুন salary মানকে audit_log টেবিলে সন্নিবেশিত করবে।

CREATE OR REPLACE FUNCTION log_salary_change() 
RETURNS TRIGGER AS BEGININSERTINTOauditlog(action,tablename,oldvalue,newvalue,actiontime)VALUES('UPDATE','employees',OLD.salary,NEW.salary,CURRENTTIMESTAMP);RETURNNEW;END;
BEGIN
    INSERT INTO audit_log (action, table_name, old_value, new_value, action_time)
    VALUES ('UPDATE', 'employees', OLD.salary, NEW.salary, CURRENT_TIMESTAMP);
    RETURN NEW;
END;
 LANGUAGE plpgsql;

এখানে, OLD.salary পুরোনো মান এবং NEW.salary নতুন মান নির্দেশ করে।

  1. Step 2: Trigger তৈরি করা

এখন, একটি BEFORE UPDATE trigger তৈরি করতে হবে, যাতে যখনই salary পরিবর্তিত হবে, তখন এটি trigger function চালাবে।

CREATE TRIGGER salary_change_trigger
BEFORE UPDATE ON employees
FOR EACH ROW
WHEN (OLD.salary IS DISTINCT FROM NEW.salary)
EXECUTE FUNCTION log_salary_change();

এখানে, BEFORE UPDATE trigger তৈরি করা হয়েছে। এটি তখনই কার্যকর হবে যখন salary কলামের মান পরিবর্তিত হবে (যেহেতু WHEN শর্তে salary এর পুরোনো এবং নতুন মান আলাদা হতে হবে)।


Trigger ব্যবহার করার সুবিধা

  1. Data Integrity: Trigger ব্যবহারের মাধ্যমে আপনি ডেটাবেসের মধ্যে একাধিক বৈধতা যাচাই করতে পারেন, যেমন ডেটা পরিবর্তন বা মুছে ফেলা ছাড়া আগে।
  2. Audit Logging: Trigger ব্যবহার করে আপনি ডেটা পরিবর্তনের লগ রাখতে পারেন (যেমন audit_log টেবিলে লগ ইনসার্ট করা)।
  3. Automated Actions: Trigger সাহায্যে আপনি বিভিন্ন স্বয়ংক্রিয় কাজ (যেমন অন্য টেবিলে ডেটা ইনসার্ট বা আপডেট) সম্পাদন করতে পারেন।

Trigger সংশোধন ও মুছে ফেলা

  • Trigger সংশোধন: PostgreSQL এ সরাসরি ট্রিগার সংশোধন করা যায় না। তবে, আপনি পুরানো trigger ড্রপ করে নতুন trigger তৈরি করতে পারেন।

    DROP TRIGGER IF EXISTS salary_change_trigger ON employees;
    
  • Trigger মুছে ফেলা: একটি trigger মুছে ফেলতে DROP TRIGGER কমান্ড ব্যবহার করা হয়।

    DROP TRIGGER salary_change_trigger ON employees;
    

Conclusion

PostgreSQL তে Complex Triggers তৈরি করে আপনি ডেটাবেসের মধ্যে বিভিন্ন ইভেন্টের ভিত্তিতে স্বয়ংক্রিয় কার্যক্রম পরিচালনা করতে পারেন। Trigger Functions তৈরি করে আপনি ডেটা যাচাই, লগিং এবং অন্যান্য বিভিন্ন কার্যক্রম সম্পাদন করতে পারবেন। ট্রিগার ডেটাবেসের কর্মক্ষমতা ও নিরাপত্তা বাড়াতে সাহায্য করে এবং আপনার অ্যাপ্লিকেশন বা সিস্টেমের জন্য আরো শক্তিশালী কার্যকারিতা প্রদান করে।

Content added By
Promotion

Are you sure to start over?

Loading...