Tutorial ini memberikan kueri untuk mereset AUTO_INCREMENT di MySQL menggunakan Tabel InnoDB. Ini menunjukkan cara memperbarui atribut AUTO_INCREMENT dari Tabel InnoDB.
Perhatian
Jangan gunakan perintah ALTER pada tabel yang memiliki data besar. MySQL membutuhkan waktu lama untuk memperbarui tabel jika ukuran tabel besar.
Perintah ALTER harus digunakan hanya jika benar-benar diperlukan.
AUTO_INCREMENT tidak dapat ditetapkan dengan nilai yang lebih rendah dari nilai maksimum yang ada.
Membuat Database dan Tabel
Pada bagian ini, kita akan membuat database dan tabel yang akan digunakan untuk mengupdate atribut AUTO_INCREMENT.
# Create the Database
CREATE SCHEMA `autoinc` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# Create the Table
CREATE TABLE `autoinc`.`user` (
`id` INT NOT NULL AUTO_INCREMENT,
`firstName` VARCHAR(100) NOT NULL,
`lastName` VARCHAR(100) NULL,
`username` VARCHAR(45) NOT NULL,
PRIMARY KEY (`id`));
Untuk mendemonstrasikan operasi AUTO_INCREMENT, kami akan menyisipkan beberapa baris seperti yang ditunjukkan di bawah ini.
# Insert Rows
INSERT INTO `autoinc`.`user`(`firstName`,`lastName`,`username`) values('John', 'Dave', 'johndave007');
INSERT INTO `autoinc`.`user`(`firstName`,`lastName`,`username`) values('Vijay', 'Mallik', 'mallikvijay');
INSERT INTO `autoinc`.`user`(`firstName`,`lastName`,`username`) values('Ricky', 'Walker', 'rickyhunt');
INSERT INTO `autoinc`.`user`(`firstName`,`lastName`,`username`) values('Vikas', 'Roy', 'vikasroy');
AUTO_INCREMENT Baca Contoh
Kita bisa mendapatkan nilai AUTO_INCREMENT saat ini untuk tabel apa pun menggunakan kueri seperti yang ditunjukkan di bawah ini. Ini mungkin tidak mencerminkan nilai dengan benar karena INFORMATION_SCHEMA menunjukkan nilai perkiraan yang mungkin bukan nilai sebenarnya.
# Syntax
SELECT `AUTO_INCREMENT` FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '<database>' AND TABLE_NAME = '<table>';
# Example
SELECT `AUTO_INCREMENT` FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'autoinc' AND TABLE_NAME = 'user';
# Result
---------------
AUTO_INCREMENT
---------------
5
Sekarang tunggu sebentar dan jalankan kueri yang disebutkan di bawah ini.
INSERT INTO `autoinc`.`user`(`firstName`,`lastName`,`username`) values( 'Nick', 'Jones', 'nick' );
SELECT `AUTO_INCREMENT` FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'autoinc' AND TABLE_NAME = 'user';
# Result
---------------
AUTO_INCREMENT
---------------
5
Itu masih menunjukkan nilai AUTO_INCREMENT sebagai 5, tetapi nilai yang diharapkan adalah 6. Inilah yang saya maksud dengan nilai perkiraan.
Kita juga dapat memanggil fungsi LAST_INSERT_ID untuk mendapatkan AUTO_INCREMENT nilai kurang satu segera setelah menjalankan kueri INSERT. Mungkin bukan yang terbaik untuk mendapatkan nilai AUTO_INCREMENT menggunakan LAST_INSERT_ID di sebagian besar skenario, terutama dalam produksi.
# Example
INSERT INTO `autoinc`.`user`(`firstName`,`lastName`,`username`) values('Nicolas', 'Dave', 'nicolas' );
SELECT LAST_INSERT_ID() as `id`;
# Result
---------------
id
---------------
6
Setelah menjalankan kueri di atas, nilai AUTO_INCREMENT yang diharapkan adalah 7, dan memanggil LAST_INSERT_ID() menunjukkan 6 yang benar, tetapi mungkin tidak ideal untuk menggunakan LAST_INSERT_ID() untuk mendapatkan nilai AUTO_INCREMENT.
Cara lain untuk mendapatkan nilai AUTO_INCREMENT adalah dengan menggunakan perintah SHOW seperti gambar di bawah ini. Ini juga menunjukkan nilai perkiraan yang mungkin bukan nilai sebenarnya.
# Syntax
SHOW TABLE STATUS FROM `<database>` WHERE `name` LIKE '<table>';
# Example
SHOW TABLE STATUS FROM `autoinc` WHERE `name` LIKE 'user';
# Result
------------------------------
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
------------------------------
user InnoDB 10 Dynamic 4 4096 16384 0 0 0 5 2020-05-26 20:01:31 2020-05-26 20:04:14 NULL utf8mb4_unicode_ci NULL
Nilai Baris adalah 4 dan Peningkatan_Otomatis adalah 5 yang bukan nilai sebenarnya. Ini adalah nilai perkiraan.
Untuk mendapatkan nilai yang tepat, kita dapat menggunakan perintah SHOW CREATE seperti yang ditunjukkan di bawah ini.
# Example
SHOW CREATE TABLE user;
# Result
Table Create Table
------------------------------
user CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`firstName` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
`lastName` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`username` varchar(45) COLLATE utf8mb4_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
Ini menunjukkan nilai yang tepat dari atribut AUTO_INCREMENT.
Contoh Pembaruan AUTO_INCREMENT
Untuk memperbarui nilai AUTO_INCREMENT, kita dapat menggunakan kueri ALTER seperti yang ditunjukkan di bawah ini. Sangat mudah untuk mengatur nilai AUTO_INCREMENT dari tabel kosong karena MySQL tidak perlu membuat salinan dari baris yang ada untuk menjalankan perintah ALTER. Selain itu, kita dapat menyetel ulang AUTO_INCREMENT ke 1 atau menyetelnya ke nilai yang diinginkan untuk memulai urutan.
# Syntax
ALTER TABLE <table> AUTO_INCREMENT = <value>;
# Examples
ALTER TABLE `autoinc`.`user` AUTO_INCREMENT = 1;
ALTER TABLE user AUTO_INCREMENT = 1;
ALTER TABLE `autoinc`.`user` AUTO_INCREMENT = 100000;
Ringkasan
Tutorial ini memberikan kueri dengan contoh untuk mendapatkan nilai atribut AUTO_INCREMENT dari tabel InnoDB. Itu juga memberikan contoh untuk memperbarui atribut AUTO_INCREMENT.