কম্পিউটার

মাইএসকিউএল ট্রিগারে 'প্রত্যেক সারির জন্য' কীভাবে কাজ করে?


আসলে 'প্রত্যেক সারির জন্য' মানে প্রতিটি মিলে যাওয়া সারির জন্য যা হয় আপডেট বা মুছে ফেলা হয়। অন্য কথায়, আমরা বলতে পারি যে প্রতিটি সারিতে ট্রিগার প্রয়োগ করা হয় না, এটি কেবল প্রতিটি প্রভাবিত টেবিল সারির জন্য ট্রিগার বডি কার্যকর করতে বলে। আমরা নিম্নলিখিত উদাহরণ দ্বারা এটি ব্যাখ্যা করতে পারি -

উদাহরণ

এই উদাহরণে, আমরা দুটি সারণী তৈরি করছি, নমুনা এবং নমুনা_রোভাইফেক্ট, নিম্নরূপ −

mysql> টেবিল নমুনা তৈরি করুন(id int, value varchar(20)); কোয়েরি ঠিক আছে, 0 সারি প্রভাবিত (0.47 সেকেন্ড) mysql> নমুনা (আইডি, মান) মানগুলিতে সন্নিবেশ করুন (100, 'একই'), (101 ,'ভিন্ন'),(500, 'অসাধারণ'),(501, 'অস্থায়ী');কোয়েরি ঠিক আছে, 4টি সারি প্রভাবিত (0.04 সেকেন্ড)রেকর্ড:4টি সদৃশ:0 সতর্কতা:0mysql> নমুনা থেকে * নির্বাচন করুন;+-- ----+------------+| আইডি | মান |+------+------------+| 100 | একই || 101 | ভিন্ন || 500 | চমৎকার || 501 | অস্থায়ী |+------+------------ সেটে 4 সারি (0.00 সেকেন্ড) mysql> সারণি তৈরি করুন নমুনা_রোভাইফেক্টেড(আইডি int); কোয়েরি ঠিক আছে, 0 সারি প্রভাবিত (0.53 সেকেন্ড) mysql> নমুনা_রোভাফেক্টেড থেকে 'সারি প্রভাবিত' হিসাবে গণনা(*) নির্বাচন করুন;+---------------+| সারি প্রভাবিত |+---------------+| 0 |+---------------+1 সারি সেটে (0.10 সেকেন্ড)

এখন, আমরা একটি ট্রিগার তৈরি করব যা নিম্নরূপ সারণী ‘নমুনা’-এর যেকোনো মান মুছে ফেলার আগে ট্রিগার করে −

mysql> ডিলিমিটার //mysql> স্যাম্পল মুছে ফেলার আগে ট্রিগার ট্রিগার_বিফোর_ডিলিট_স্যাম্পল তৈরি করুন -> প্রতিটি সারির জন্য -> শুরু করুন -> @count =যদি সেট করুন (@count শূন্য, 1, (@count+1)); -> নমুনা_রোভা প্রভাবিত মান (@count) ঢোকান; -> শেষ; -> //কোয়েরি ঠিক আছে, 0টি সারি প্রভাবিত (0.15 সেকেন্ড)mysql> ডিলিমিটার;

এখন, নিম্নলিখিত ক্যোয়ারীটি টেবিল 'নমুনা' থেকে কিছু মান মুছে ফেলবে এবং মুছে ফেলা সারির সংখ্যা @count ব্যবহারকারী ভেরিয়েবলে সংরক্ষণ করা হবে −

mysql> নমুনা থেকে মুছুন যেখানে আইডি>=500; কোয়েরি ঠিক আছে, 2টি সারি প্রভাবিত (0.11 সেকেন্ড)mysql> @count নির্বাচন করুন;+---------+| @গণনা |+---------+| 2 |+---------+1 সারি সেটে (0.03 সেকেন্ড)

নিম্নলিখিত প্রশ্নের সাহায্যে, আমরা মোছার দ্বারা প্রভাবিত সারিগুলির মান পরীক্ষা করতে পারি, নিম্নরূপ নমুনা_রোভাইফেক্টেড টেবিলে সন্নিবেশিত −

mysql> নমুনা_রোভাইফেক্টেড থেকে 'সারি প্রভাবিত' হিসাবে গণনা(*) নির্বাচন করুন;+---------------+| সারি প্রভাবিত |+---------------+| 2 |+---------------+1 সারি সেটে (0.00 সেকেন্ড) mysql> নমুনা থেকে * নির্বাচন করুন;+------+--------- ---+| আইডি | মান |+------+------------+| 100 | একই || 101 | ভিন্ন |+------+---------+2 সারি সেটে (0.00 সেকেন্ড) 

উপরের উদাহরণের সাহায্যে, এটা স্পষ্ট যে 'প্রত্যেক সারির জন্য' মানে প্রতিটি মিলে যাওয়া সারির জন্য যা হয় আপডেট বা মুছে ফেলা হয়।


  1. একটি MySQL টেবিলের প্রতিটি মানের জন্য সর্বোচ্চ নির্বাচন করুন?

  2. মাইএসকিউএল-এ খালি সারির জন্য ডিফল্ট মান কীভাবে সেট করবেন?

  3. এটি কী, এটি কীসের জন্য এবং VoWiFi কলিং পরিষেবা কীভাবে কাজ করে?

  4. ইন্টারনেট কিভাবে কাজ করে?