কম্পিউটার টিউটোরিয়াল

MySQL AUTO_INCREMENT উদাহরণসহ (MySQL AUTO_INCREMENT with Examples)


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 কলামের জন্য সবচেয়ে ছোট ইন্টিজার ডেটা টাইপ ব্যবহার করুন যা সর্বোচ্চ সিকোয়েন্স ভ্যালু ধারণ করতে পারে।
  • কলাম ডেটা টাইপের উপরের রেঞ্জে পৌঁছালে আর সিকোয়েন্স জেনারেট করা যায় না (ফেল করবে)।

তাই সম্ভব হলে UNSIGNED অ্যাট্রিবিউট ব্যবহার করুন যাতে AUTO_INCREMENT কলামে বেশি রেঞ্জের ভ্যালু পাওয়া যায়।

  1. MySQL-এ কলাম মান শাফল করা

  2. MySQL-এ ডিফল্ট ভ্যালু '0000-00-00' সহ DATETIME কলাম তৈরি করা

  3. MySQL-এ NULL মানযুক্ত কলামকে গুন করার সমস্যা সমাধান (COALESCE)

  4. MySQL-এ AUTO_INCREMENT কলাম নিয়ে কাজ করা