MySQL AUTO_INCREMENT কী? কীভাবে পরীক্ষা করবেন, সেট করবেন এবং রিসেট করবেন (সম্পূর্ণ গাইড)

目次

MySQL AUTO_INCREMENT কী?

AUTO_INCREMENT এর মৌলিক বিষয়

MySQL-এ, AUTO_INCREMENT একটি বৈশিষ্ট্য যা ডেটাবেস টেবিলের সংখ্যাসূচক মানগুলোকে স্বয়ংক্রিয়ভাবে বৃদ্ধি করে। এটি সাধারণত প্রাইমারি কী (PRIMARY KEY) হিসেবে ব্যবহৃত হয়, যা প্রতিবার একটি নতুন সারি সন্নিবেশিত হলে স্বয়ংক্রিয়ভাবে ধারাবাহিক সংখ্যা নির্ধারণ করে—হাতে ID নির্দিষ্ট না করেও।

AUTO_INCREMENT এর প্রধান ব্যবহার

  • স্বয়ংক্রিয় সদস্য ID উৎপাদন : ব্যবহারকারী নিবন্ধন করলে একটি অনন্য ID নির্ধারণ করে
  • অর্ডার নম্বর ব্যবস্থাপনা : প্রতিটি অর্ডারের জন্য স্বয়ংক্রিয়ভাবে একটি নম্বর নির্ধারণ করে
  • প্রোডাক্ট কোড নির্ধারণ : পণ্যের জন্য একটি অনন্য শনাক্তকারী হিসেবে ব্যবহৃত হয়

AUTO_INCREMENT সঠিকভাবে ব্যবহার করে, আপনি ডেটার অনন্যতা বজায় রাখতে পারেন এবং প্রশাসনিক কাজের বোঝা কমাতে পারেন।

MySQL-এ AUTO_INCREMENT মান কীভাবে পরীক্ষা করবেন [3 SQL Commands]

পদ্ধতি ১: SHOW TABLE STATUS ব্যবহার করুন

SHOW TABLE STATUS LIKE 'table_name';

এই কমান্ডটি চালালে, বর্তমান AUTO_INCREMENT মান Auto_increment কলামে প্রদর্শিত হয়।

পদ্ধতি ২: INFORMATION_SCHEMA.TABLES থেকে পুনরুদ্ধার করুন

SELECT AUTO_INCREMENT FROM information_schema.tables 
WHERE table_schema = 'database_name' AND table_name = 'table_name';

এই পদ্ধতিতে আপনি সরাসরি লক্ষ্য টেবিলের জন্য নির্ধারিত AUTO_INCREMENT মান পুনরুদ্ধার করতে পারেন।

পদ্ধতি ৩: SHOW CREATE TABLE ব্যবহার করুন

SHOW CREATE TABLE table_name;

এই কমান্ডটি চালালে, টেবিল তৈরির DDL (ডেটা ডেফিনিশন ল্যাঙ্গুয়েজ) প্রদর্শিত হয়, যার মধ্যে AUTO_INCREMENT সেটিং অন্তর্ভুক্ত থাকে।

AUTO_INCREMENT সেট এবং পরিবর্তন করা

নতুন টেবিল তৈরি করার সময় AUTO_INCREMENT সেট করা

নতুন টেবিল তৈরি করার সময় AUTO_INCREMENT সহ একটি কলাম সংজ্ঞায়িত করতে, নিম্নলিখিত SQL ব্যবহার করুন:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255)
);

বিদ্যমান টেবিলের AUTO_INCREMENT মান পরিবর্তন করা

যদি আপনি বিদ্যমান টেবিলের AUTO_INCREMENT মান পরিবর্তন করতে চান, নিম্নলিখিত কমান্ড ব্যবহার করুন:

ALTER TABLE users AUTO_INCREMENT = 1000;

এই কমান্ডটি চালানোর পরে, পরবর্তী সন্নিবেশিত রেকর্ডটি ID 1000 থেকে শুরু হবে।

AUTO_INCREMENT ইনক্রিমেন্ট মান পরিবর্তন (MySQL 8.0 বা তার পরের সংস্করণে)

ডিফল্টভাবে, AUTO_INCREMENT মান ১ করে বৃদ্ধি পায়। তবে প্রয়োজনে আপনি ইনক্রিমেন্ট মান পরিবর্তন করতে পারেন।

SET @@auto_increment_increment = 5;

এই সেটিংয়ের মাধ্যমে, AUTO_INCREMENT মান প্রতি বার ৫ করে বৃদ্ধি পাবে (যেমন, ১, ৬, ১১, …)।

AUTO_INCREMENT ব্যবহার করার সময় গুরুত্বপূর্ণ নোটসমূহ [Prevent Data Issues]

AUTO_INCREMENT এর সর্বোচ্চ মান সীমা

AUTO_INCREMENT এর সর্বোচ্চ মান কলামের ডেটা টাইপের উপর নির্ভর করে। উদাহরণস্বরূপ, INT টাইপ ব্যবহার করলে সর্বোচ্চ মান 2,147,483,647। যদি এই সীমা অতিক্রান্ত হয়, নতুন ID তৈরি করা যাবে না, ফলে একটি ত্রুটি ঘটবে।

সমাধানসমূহ

  • BIGINT ব্যবহার করুন যাতে অনেক বড় মান সমর্থন করা যায়
  • প্রয়োজন অনুযায়ী ডেটা আর্কাইভিং বা রিসেট করার কথা বিবেচনা করুন

ডেটা মুছে ফেলার পরে AUTO_INCREMENT এর আচরণ

MySQL-এ, রেকর্ড মুছে ফেললে AUTO_INCREMENT মান স্বয়ংক্রিয়ভাবে রিসেট হয় না।

DELETE FROM users WHERE id = 100;

এমনকি যদি নির্দিষ্ট কোনো ID মুছে ফেলা হয়, তবুও পরবর্তী সন্নিবেশিত মান বর্তমান কাউন্টার থেকে চালিয়ে যায় এবং পুনরায় ব্যবহার হয় না।

কিভাবে রিসেট করবেন
TRUNCATE TABLE ব্যবহার করলে সব ডেটা মুছে যায় এবং AUTO_INCREMENT মান রিসেট হয়।

TRUNCATE TABLE users;

এই অপারেশন সম্পন্ন করার পরে, পরবর্তী সন্নিবেশিত ID ১ থেকে পুনরায় শুরু হবে।

ট্রানজ্যাকশন এবং AUTO_INCREMENT

MySQL-এ, একটি ট্রানজ্যাকশন রোলব্যাক (ROLLBACK) হলেও AUTO_INCREMENT মান ফিরে আসে না।

START TRANSACTION;
INSERT INTO users (name) VALUES ('Alice');
ROLLBACK;

এই ক্ষেত্রে, ডেটা সন্নিবেশিত হয় না, তবে AUTO_INCREMENT মান বৃদ্ধি পেতে থাকে। ফলে ID নম্বরে ফাঁক দেখা দিতে পারে।

প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ)

প্রশ্ন ১: কেন AUTO_INCREMENT মানগুলিতে কখনও কখনও ফাঁক থাকে?

A: কারণ INSERT এর পরে ROLLBACK করা হলে সংখ্যাগুলি রিসেট হয় না। মুছে ফেলা এবং ব্যর্থ ইনসার্টও ফাঁক তৈরি করতে পারে।

Q2: আমি কীভাবে AUTO_INCREMENT মান রিসেট করতে পারি?

A: TRUNCATE TABLE table_name; চালিয়ে এটি রিসেট করুন।

Q3: আমি কীভাবে বর্তমান AUTO_INCREMENT মান পরীক্ষা করতে পারি?

A: SHOW TABLE STATUS ব্যবহার করুন অথবা INFORMATION_SCHEMA.TABLES-এ কুয়েরি করুন।

Q4: যদি AUTO_INCREMENT তার সর্বোচ্চ মান অতিক্রম করে তবে কী হয়?

A: যদি এটি INT-এর সর্বোচ্চ মান অতিক্রম করে, তবে একটি ত্রুটি ঘটবে। আপনাকে কলামের টাইপ BIGINT-এ পরিবর্তন করতে হবে।