MySQL-এ AUTO_INCREMENT কলাম নিয়ে কাজ করার পদ্ধতি:
AUTO_INCREMENT অ্যাট্রিবিউট নতুন সারির জন্য ইউনিক আইডেন্টিফায়ার জেনারেট করতে ব্যবহৃত হয়। নিচের কোয়েরি বিবেচনা করুন:
কোয়েরি
CREATE TABLE tableName (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO tableName (name) VALUES ('val1'),('val2'),('val3'), ('val4');
SELECT * FROM tableName;
আউটপুট
+----+---------+ | id | name | +----+---------+ | 1 | val1 | | 2 | val2 | | 3 | val3 | | 4 | val4 | +----+---------+
উপরের কোয়েরিতে AUTO_INCREMENT কলামের জন্য কোনো ভ্যালু স্পেসিফাই করা হয়নি, তাই MySQL স্বয়ংক্রিয়ভাবে id কলামে সংখ্যা সিকোয়েন্স অ্যাসাইন করল। 0 ভ্যালু এক্সপ্লিসিটলি অ্যাসাইন করলেও নম্বর সিকোয়েন্স ০ থেকে শুরু হয় (যদি NO AUTO VALUE ON ZERO SQL মোড এনাবল না থাকে)।
যদি কলাম NOT NULL ডিক্লেয়ার করা থাকে, তবে NULL অ্যাসাইন করলে সংখ্যা সিকোয়েন্স জেনারেট হয়।
যদি AUTO_INCREMENT কলামে যেকোনো ভ্যালু ইনসার্ট করা হয়, তবে কলামটি সেটি ভ্যালুতে সেট হয় এবং সিকোয়েন্স রিসেট হয় সর্বোচ্চ কলাম ভ্যালু থেকে ক্রমাগত মান জেনারেট করার জন্য।
বিদ্যমান AUTO_INCREMENT কলাম আপডেট করলে সিকোয়েন্স রিসেট হয়। সাম্প্রতিক অটো-জেনারেটেড AUTO_INCREMENT ভ্যালু LAST_INSERT_ID() (SQL) বা mysql_insert_id() (C API) দিয়ে পাওয়া যায়।
AUTO_INCREMENT-এর নিয়মাবলী
- প্রতিটি টেবিলে শুধু একটি
AUTO_INCREMENTকলাম থাকে (সাধারণত ইন্টিজার টাইপ)। AUTO_INCREMENTকলাম ইনডেক্সড হতে হবে (PRIMARY KEY বা UNIQUE ইনডেক্স)।AUTO_INCREMENTকলামেNOT NULLকনস্ট্রেইন্ট থাকতে হবে।AUTO_INCREMENTঅ্যাট্রিবিউট সেট করলে MySQL অটোমেটিক্যালিNOT NULLকনস্ট্রেইন্ট যোগ করে।