কম্পিউটার

কিভাবে আমরা একই ট্রিগার ইভেন্ট এবং অ্যাকশন সময়ের জন্য একাধিক MySQL ট্রিগার তৈরি করতে পারি?


MySQL 5.7.2+ আমাদের একটি টেবিলে একই ইভেন্ট এবং অ্যাকশন সময়ের জন্য একাধিক ট্রিগার তৈরি করতে দেয়। ঘটনা ঘটলে উভয় ট্রিগার ক্রমানুসারে সক্রিয় হবে। এটি একটি উদাহরণের সাহায্যে বোঝা যায় -

উদাহরণ

এই উদাহরণে, আমরা আপডেটের আগে একই ইভেন্টের জন্য একাধিক ট্রিগার তৈরি করছি। ট্রিগারের নাম হল 'Student detail_before_update' এবং 'Student detail_before_update2'। একটি ঘটনা ঘটলে তারা ক্রমানুসারে সক্রিয় হবে। আমরা এই ট্রিগারগুলি 'ছাত্র_বিস্তারিত' টেবিলে তৈরি করছি যাতে নিম্নলিখিত ডেটা রয়েছে −

mysql> Student_detail থেকে * নির্বাচন করুন;+------------+-------------+------------+ | ছাত্র | ছাত্রের নাম | ঠিকানা |+------------+------------+------------+| 100 | গৌরব | দিল্লী || 101 | রমন | সিমলা || 103 | রাহুল | জয়পুর || 104 | রাম | চণ্ডীগড় || 105 | মোহন | চণ্ডীগড় |+------------+------------+------------+5 সারি সেটে (0.06 সেকেন্ড) mysql> ডেলিমিটার // 

এখন নিম্নলিখিত ক্যোয়ারীটির সাহায্যে, আমরা প্রথম ট্রিগার তৈরি করব, যা আগের মত একই ক্যোয়ারী দ্বারা তৈরি করা হবে।

mysql> ট্রিগার স্টুডেন্টডেটেল তৈরি করুন -> USER() কে AUSER এ নির্বাচন করুন; ->Student_detail_updated(studentid, Updated_date,Updated_by) মান (OLD.studentid,NOW(),AUSER) ঢোকান; -> শেষ; //কোয়েরি ঠিক আছে, 0 সারি প্রভাবিত (0.17 সেকেন্ড)mysql> আপডেট করুন student_detail SET ঠিকানা ='লুধিয়ানা' যেখানে studentName ='Ram'; কোয়েরি ঠিক আছে, 1 সারি প্রভাবিত (0.15 সেকেন্ড) সারি মিলেছে:1 পরিবর্তিত:1 সতর্কতা:0 

উপরে তৈরি ট্রিগার চালু করার পর আমরা নিম্নলিখিত ফলাফল পেয়েছি -

mysql> student_detail_updated থেকে * সিলেক্ট করুন;+------------------------------------- -----------+| ছাত্র | আপডেট_তারিখ | আপডেট_দ্বারা |+------------+----------------------+------------ ---+| 104 | 2017-11-22 16:17:16 | root@localhost |+------------+----------------------+------------ -----+1 সারি সেটে (0.00 সেকেন্ড)

এখন, একই ইভেন্টের দ্বিতীয় ট্রিগার এবং কর্ম সময় নিম্নরূপ তৈরি করা যেতে পারে −

mysql> ট্রিগার তৈরি করুন studentdetail_before_update2 -> আপডেটের আগে -> অন Student_detail -> প্রতিটি সারির জন্য অনুসরণ করুন studentdetail_before_update -> শুরু করুন -> AUSER Varchar(40); -> USER() কে AUSER এ নির্বাচন করুন; -> স্টুডেন্ট_ডিটেইল_আপডেটেড(ছাত্র, আপডেট_তারিখ,আপডেটেড_বাই) মান (OLD.studentid,NOW(),AUSER) ঢোকান; -> শেষ; //কোয়েরি ঠিক আছে, 0 সারি প্রভাবিত (0.15 সেকেন্ড)

উপরের ট্রিগারটি প্রথম ট্রিগারের পরে সক্রিয় হবে কারণ আমরা 'অনুসরণ' কীওয়ার্ড ব্যবহার করছি।

mysql> আপডেট করুন Student_detail SET ঠিকানা ='পাতিয়ালা' যেখানে ছাত্র নাম ='মোহন'; কোয়েরি ঠিক আছে, 1 সারি প্রভাবিত (0.08 সেকেন্ড) সারি মিলেছে:1 পরিবর্তিত:1 সতর্কতা:0 

এখন, যখন আমরা মান আপডেট করি, নিম্নলিখিত ফলাফল সেটটি একই ইভেন্ট এবং অ্যাকশন সময়ের জন্য দুটি সারি দেখাচ্ছে। দ্বিতীয় সারি studentdetail_before_update ট্রিগারের পরে মান উপস্থাপন করে এবং তৃতীয় সারি studentdetail_before_update2 ট্রিগারের পরে মান উপস্থাপন করে।

mysql> student_detail_updated থেকে * সিলেক্ট করুন;+------------------------------------- -----------+| ছাত্র | আপডেট_তারিখ | আপডেট_দ্বারা |+------------+----------------------+------------ ---+| 104 | 2017-11-22 16:17:16 | root@localhost || 105 | 2017-11-22 16:19:28 | root@localhost || 105 | 2017-11-22 16:19:28 | root@localhost |+------------+----------------------+------------ -----+3 সারি সেটে (0.00 সেকেন্ড)

  1. সমস্ত MySQL ট্রিগার এবং শুধুমাত্র বর্তমান ডাটাবেসের জন্য ট্রিগারগুলি কীভাবে পাবেন

  2. কিভাবে আমি একটি MySQL বুলিয়ান কলাম তৈরি করতে পারি এবং একই কলাম পরিবর্তন করার সময় মান 1 বরাদ্দ করতে পারি?

  3. মাইএসকিউএল-এ একই সময়ে একাধিক ডেটা ইনপুট?

  4. Tkinter এ একই সময়ে একাধিক ক্যানভাস কিভাবে দেখাবেন?