মূল কন্টেন্টে যান
মডিউল 12 · 4-এর পাঠ 4কোর্সে 48/57~12 min
মডিউল পাঠ (4/4)

ব্যবহারিক ট্রিগার এবং অডিট

এখন যেহেতু আমরা শিখেছি কিভাবে স্মার্ট বুলেট (ট্রিগার ফাংশন) জাল করতে হয়, আমাদের একটি ইভেন্টের জন্য অপেক্ষা করা আসল প্রাইমড অস্ত্রগুলিতে তাদের মাউন্ট করতে হবে: এখানে আসল ট্রিগারগুলি আসে! একটি ট্রিগার আনুষ্ঠানিকভাবে পূর্বে তৈরি একটি ফাংশন সংযুক্ত করে এবং একটি নির্দিষ্ট টেবিলে একটি নির্দিষ্ট CRUD ইভেন্টকে "BEFORE" বা "AFTER" ফায়ার করার নির্দেশ দেয়।

অনেক অপশন আছে; উদাহরণস্বরূপ FOR EACH ROW প্রভাবিত সারি প্রতি একবার এটিকে ফায়ার করে, তাই যদি একটি বাল্ক ক্যোয়ারী 5 মিলিয়ন সারির উপর একটি গ্লোবাল আপডেট হয়, তাহলে এটি 5 মিলিয়ন মাইক্রো-এক্সিকিউশন ফায়ার করবে — এর সাথে সতর্ক থাকুন!

SQL
CREATE TRIGGER sync_inventory_trigger
-- Event options
AFTER INSERT OR UPDATE ON order_items
-- Modus operandi (singular or global macro-block FOR EACH STATEMENT)
FOR EACH ROW
-- Run the forged action
EXECUTE FUNCTION update_stock();

ট্রিগারটি জাভাস্ক্রিপ্টে অদৃশ্য এবং ইঞ্জিনে নিরাপদে জমা দেওয়া আপডেটের উপর ভিত্তি করে স্বায়ত্তশাসিতভাবে স্টকটিকে পুরোপুরি সামঞ্জস্যপূর্ণ রাখবে।

স্বয়ংক্রিয় আপডেট করা_এটি

একটি চিরসবুজ ব্যবসায়িক সমস্যা রয়েছে যেখানে আমরা আমাদের JS আপডেট মডেলগুলিতে { updated_at: new Date() } পাস করতে ভুলে যাই। একটি ট্রিগার ফাংশন set_updated_at একটি BEFORE UPDATE ট্রিগারের সাথে মিলিত এই উপদ্রব দূর করে, নীরবে প্রতিটি রেকর্ড পরিবর্তন স্বয়ংক্রিয়ভাবে আপডেট করে।

নিজে চেষ্টা করে দেখুন

ব্যায়াম#sql.m12.l4.e1
প্রচেষ্টা: 0লোড হচ্ছে...

'trg_force_uppercase' নামে একটি ট্রিগার তৈরি করুন।\n'গ্রাহকদের' টেবিলে 'প্রবেশের আগে' পর্বে এটি সংযুক্ত করুন।\n'প্রতিটি সারির জন্য' সারি-বাই-সারি গণনা জোর করে এবং 'force_uppercase_name()' ফাংশনটি কার্যকর করার আহ্বান জানান: 'F_Name পুনরায় তৈরি করুন। (যেহেতু পরিবেশ বিচ্ছিন্ন) কোডের শীর্ষে, তারপর ট্রিগার ঘোষণা যোগ করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

টেক্সট সিনট্যাক্স: প্রথমে ফাংশন তৈরি করুন, তারপর প্রতিটি সারি কার্যকর করার ফাংশন force_uppercase_name() এর জন্য গ্রাহকদের প্রবেশ করার আগে ট্রিগার তৈরি করুন trg_force_uppercase যোগ করুন;

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম#sql.m12.l4.e2
প্রচেষ্টা: 0লোড হচ্ছে...

সেন্সর মেরে ফেলুন! কখনও কখনও আমরা গোলমালপূর্ণ অডিটগুলিকে বাইপাস করে কাঁচা বীজ ফাইল বা অস্থায়ী নেটিভ পরিবর্তনগুলিকে ঠেলে দিতে চাই৷\nএকটি ট্রিগার ড্রপ করা অবিশ্বাস্যভাবে সহজ (আপনি জৈব ফাংশনটি মুছবেন না, আপনি কেবল সেন্সর বাইন্ডিংটি মুছুন)।\n'ড্রপ ট্রিগার' কীওয়ার্ডটি ব্যবহার করুন, গ্লোবাল নাম এবং সংযুক্তির নাম উল্লেখ করে।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

কোথা থেকে তা উল্লেখ করতে মনে রাখবেন। ড্রপ ট্রিগার গ্রাহকদের উপর trg_force_uppercase;

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ