MySQL-এ কোনো টেবিলের পরবর্তী AUTO_INCREMENT মান জানতে SHOW TABLE STATUS ছাড়া INFORMATION_SCHEMA.TABLES ক্যোয়ারি করুন।
সিনট্যাক্স
SELECT AUTO_INCREMENT AS next_auto_increment_value
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'database_name'
AND TABLE_NAME = 'table_name';
উদাহরণ
CREATE TABLE view_auto_inc_demo (
student_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
student_name VARCHAR(20)
);
INSERT INTO view_auto_inc_demo (student_name) VALUES
('Ramit'), ('Bob'), ('Chris'), ('Robert'), ('John');
ক্যোয়ারি
SELECT AUTO_INCREMENT AS NextAutoIncrementValue
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'test'
AND TABLE_NAME = 'view_auto_inc_demo';
ফলাফল
+------------------------+
| NextAutoIncrementValue |
+------------------------+
| 6 |
+------------------------+
৫টি সারি ইনসার্ট করা হয়েছে, তাই পরবর্তী ID হবে ৬।
SHOW TABLE STATUS বিকল্প
SHOW TABLE STATUS LIKE 'view_auto_inc_demo';\G
\G দিয়ে ভার্টিকাল ফরম্যাটে দেখুন। Auto_increment ফিল্ডে মান থাকবে।
AUTO_INCREMENT মান রিসেট/সেট করা
ALTER TABLE view_auto_inc_demo AUTO_INCREMENT = 1000;
InnoDB নোট
- InnoDB-এ
AUTO_INCREMENTকাউন্টার মেমরিতে থাকে, রিস্টার্টে রিসেট হতে পারে (MAX(id)+1) innodb_autoinc_lock_modeকনফিগারেশন লকিং আচরণ নিয়ন্ত্রণ করে- গ্যাপ (gap) থাকা স্বাভাবিক (DELETE, ROLLBACK, FAILED INSERT)
প্রোগ্রাম্যাটিকলি পাওয়া (JDBC/Python/etc)
-- JDBC
DatabaseMetaData meta = con.getMetaData();
ResultSet rs = meta.getTables(null, "test", "view_auto_inc_demo", null);
if (rs.next()) {
// MySQL-স্পেসিফিক: getColumns বা getIndexInfo থেকে নয়, কাস্টম ক্যোয়ারি লাগে
}
সাধারণত সরাসরি SQL ক্যোয়ারি সেরা।