কম্পিউটার

কিভাবে মাইএসকিউএল-এ টেবিলের মান কমাতে স্বয়ংক্রিয়ভাবে বৃদ্ধি করা যায়?


আপনি যদি InnoDB ইঞ্জিন ব্যবহার করেন, তাহলে আপনি টেবিলের স্বয়ংক্রিয়_বৃদ্ধি মান কম মান সেট করতে পারবেন না। আপনাকে আপনার ইঞ্জিন InnoDB থেকে MyISAM এ পরিবর্তন করতে হবে।

দ্রষ্টব্য: ইঞ্জিন MyISAM আপনাকে কম মান সেট করতে দেয়। এখানে, আমরা একই ব্যবহার করছি।

অফিসিয়াল নথি অনুযায়ী:

আপনি কাউন্টারটিকে আগে থেকে ব্যবহার করা হয়েছে এমন কোনো মানের থেকে কম বা সমানে রিসেট করতে পারবেন না। MyISAM-এর জন্য, যদি মানটি বর্তমানে AUTO_INCREMENT কলামে থাকা সর্বোচ্চ মানের থেকে কম বা সমান হয়, তাহলে মানটি বর্তমান সর্বোচ্চ প্লাস ওয়ানে রিসেট করা হবে। InnoDB-এর জন্য, যদি কলামের বর্তমান সর্বোচ্চ মানের থেকে মান কম হয়, তাহলে কোনো ত্রুটি ঘটে না এবং বর্তমান ক্রম মান পরিবর্তন করা হয় না।

উপরে দেখানো হিসাবে, MyISAM-এ, ধরা যাক কিছু আইডি মুছে ফেলা হয়েছে। এর পরে, আপনি যদি আবার স্বয়ংক্রিয়_বৃদ্ধি যোগ করেন, তাহলে আইডিগুলি নিম্ন মান থেকে শুরু হবে অর্থাৎ চূড়ান্ত আইডি অবশিষ্ট থেকে শুরু হবে (আমরা কিছু আইডি মুছে ফেলার পরে)।

আসুন প্রথমে ইঞ্জিন MyISAM:

দিয়ে একটি টেবিল তৈরি করি
mysql> টেবিল ডেমোটেবল তৈরি করুন (আইডি শূন্য অটো_ইনক্রিমেন্ট প্রাথমিক কী নয়) ইঞ্জিন='মাইআইএসএএম'; কোয়েরি ঠিক আছে, 0 সারি প্রভাবিত (0.23 সেকেন্ড)

সন্নিবেশ কমান্ড ব্যবহার করে সারণীতে রেকর্ড সন্নিবেশ করার জন্য নিম্নোক্ত ক্যোয়ারী:

mysql> DemoTable মানগুলিতে সন্নিবেশ করুন();Query OK, 1 সারি প্রভাবিত (0.04 sec)mysql> DemoTable মানগুলিতে ঢোকান কোয়েরি ঠিক আছে, 1 সারি প্রভাবিত (0.03 সেকেন্ড)mysql> DemoTable মানগুলিতে ঢোকান(); কোয়েরি ঠিক আছে, 1 সারি প্রভাবিত (0.02 সেকেন্ড)mysql> DemoTable মানগুলিতে ঢোকান(); কোয়েরি ঠিক আছে, 1 সারি প্রভাবিত (0.05 সেকেন্ড)mysql> DemoTable মানগুলিতে সন্নিবেশ করান; ঠিক আছে, 1 সারি প্রভাবিত (0.08 সেকেন্ড)

নিম্নোক্ত ক্যোয়ারীটি সিলেক্ট কমান্ড ব্যবহার করে টেবিল থেকে রেকর্ড প্রদর্শন করা হল:

mysql> DemoTable থেকে *নির্বাচন করুন;

এটি নিম্নলিখিত আউটপুট তৈরি করবে

<প্রে>+----+| আইডি |+----+| 1 || 2 || 3 || 4 || 5 || 6 |+----+6 সারি সেটে (0.00 সেকেন্ড)

এখন, আইডি 4,5 এবং 6 মুছে দিন:

mysql> DemoTable থেকে মুছে দিন যেখানে Id=4 বা Id=5 বা Id=6; কোয়েরি ঠিক আছে, 3টি সারি প্রভাবিত (0.06 সেকেন্ড)

আসুন আমরা আবার সব রেকর্ড প্রদর্শন করি। নিম্নলিখিত প্রশ্ন:

mysql> DemoTable থেকে *নির্বাচন করুন;

এটি কিছু আইডি মুছে ফেলার পরে নিম্নলিখিত আউটপুট তৈরি করবে:

<প্রে>+----+| আইডি |+----+| 1 || 2 || 3 |+----+3 সারি সেটে (0.00 সেকেন্ড)

এখন, আসুন আমরা নতুন স্বয়ংক্রিয়_বৃদ্ধি আইডি সেট করি।

MyISAM ইঞ্জিনে স্বয়ংক্রিয়_বৃদ্ধির মান কম করার জন্য নিম্নোক্ত ক্যোয়ারী রয়েছে। যাইহোক, বর্তমান স্বয়ংক্রিয়_বৃদ্ধির মান এখন 7 থেকে শুরু হওয়া উচিত কিন্তু যেহেতু আমরা MyISAM ইঞ্জিন ব্যবহার করছি, তাই মানটি বর্তমান সর্বোচ্চে রিসেট করা হয়েছে, যা 3 প্লাস ওয়ান অর্থাৎ 3+ 1 =4 হবে নতুন আইডি।

নিম্নলিখিত প্রশ্ন:

mysql> সারণি পরিবর্তন করুন DemoTable auto_increment=4;কোয়েরি ঠিক আছে, 3টি সারি প্রভাবিত (0.38 সেকেন্ড)রেকর্ড:3টি সদৃশ:0 সতর্কতা:0

এখন আবার কিছু রেকর্ড ঢোকান এবং তারপর অটো_ইনক্রিমেন্ট মান 4 থেকে শুরু হয় তা পরীক্ষা করতে টেবিল থেকে সমস্ত রেকর্ড প্রদর্শন করুন:

mysql> DemoTable মানগুলিতে সন্নিবেশ করুন();Query OK, 1 সারি প্রভাবিত (0.03 sec)mysql> DemoTable মানগুলিতে ঢোকান ক্যোয়ারী ঠিক আছে, 1 সারি প্রভাবিত (0.02 সেকেন্ড)

সারণী থেকে সমস্ত রেকর্ড প্রদর্শন করার জন্য নিম্নোক্ত ক্যোয়ারী:

mysql> DemoTable থেকে *নির্বাচন করুন;

এটি নিম্নলিখিত আউটপুট তৈরি করবে। নতুন আইডি 4:

থেকে শুরু হয় <প্রে>+----+| আইডি |+----+| 1 || 2 || 3 || 4 || 5 || 6 |+----+6 সারি সেটে (0.00 সেকেন্ড)
  1. মাইএসকিউএল-এ সাউন্ডএক্স() কীভাবে প্রশ্ন করবেন?

  2. যদি একটি প্রশ্ন MySQL এ একটি শূন্য মান প্রদান করে তাহলে আমি কিভাবে 0 সেট করতে পারি?

  3. দুটি মাইএসকিউএল টেবিলের মধ্যে অনুপস্থিত মান কীভাবে খুঁজে পাবেন?

  4. মাইএসকিউএল-এ 1 থেকে শুরু করার জন্য আমি কীভাবে আমার স্বয়ংক্রিয়-বৃদ্ধির মান সেট করতে পারি?