AUTO_INCREMENT প্রাইমারি কী থাকা টেবিলে INSERT INTO SELECT ব্যবহার করার সময় প্রাইমারি কী মান এক্সপ্লিসিটলি দিলে সেটি গ্রহণ করা হয় (যদি ডুপ্লিকেট না হয়)।
টেবিল তৈরি
mysql> CREATE TABLE DemoTable1923 (
UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserName VARCHAR(20)
);
INSERT INTO SELECT ব্যবহার করে ডেটা ইনসার্ট
mysql> INSERT INTO DemoTable1923 (UserId, UserName)
SELECT 101 AS UserId, 'Chris' AS UserName;
mysql> INSERT INTO DemoTable1923 (UserId, UserName)
SELECT 102 AS UserId, 'Robert' AS UserName;
mysql> INSERT INTO DemoTable1923 (UserId, UserName)
SELECT 103 AS UserId, 'Sam' AS UserName;
নোট: এখানে UserId এক্সপ্লিসিটলি দেওয়া হয়েছে, তাই AUTO_INCREMENT ওভাররাইড হয়েছে।
ফলাফল যাচাই
mysql> SELECT * FROM DemoTable1923;
+--------+----------+ | UserId | UserName | +--------+----------+ | 101 | Chris | | 102 | Robert | | 103 | Sam | +--------+----------+
সাধারণ নিয়ম
- AUTO_INCREMENT কলামে মান দিয়ে ইনসার্ট করলে সেই মান ব্যবহার হয়।
- মান না দিলে (বা NULL/0 দিলে) অটো জেনারেট হয়।
- এক্সপ্লিসিট মান দিয়ে ইনসার্ট করলে পরবর্তী অটো-ইনক্রিমেন্ট ভ্যালু
MAX(id)+1থেকে শুরু হয়।
বিকল্প: UserId না দিয়ে ইনসার্ট
INSERT INTO DemoTable1923 (UserName) SELECT 'Chris' UNION ALL SELECT 'Robert' UNION ALL SELECT 'Sam';
তब UserId হবে ১, ২, ৩ (AUTO_INCREMENT ডিফল্ট ১ থেকে)।