Atribut AUTO_INCREMENT dapat digunakan untuk menghasilkan identitas unik untuk baris baru. Saat Anda memasukkan catatan baru ke tabel (atau setelah menambahkan atribut AUTO_INCREMENT dengan pernyataan ALTER TABLE), dan bidang auto_increment adalah NULL atau DEFAULT (dalam kasus INSERT), nilainya akan bertambah secara otomatis. Ini juga berlaku untuk 0, kecuali diaktifkan
AUTO_INCREMENT kolom mulai dari 1 secara default. Nilai yang dihasilkan secara otomatis tidak boleh lebih rendah dari 0
Setiap tabel hanya dapat memiliki satu kolom AUTO_INCREMENT. Itu harus didefinisikan sebagai kunci (tidak harus kunci SELECT * FROM animals; +----+---------+ | id | name | +----+---------+ | 1 | dog | | 2 | cat | | 3 | penguin | | 4 | fox | | 5 | whale | | 6 | ostrich | +----+---------+ 1 atau SELECT * FROM animals; +----+---------+ | id | name | +----+---------+ | 1 | dog | | 2 | cat | | 3 | penguin | | 4 | fox | | 5 | whale | | 6 | ostrich | +----+---------+ 2). Di beberapa mesin penyimpanan (termasuk InnoDB default), jika kunci terdiri dari beberapa kolom, kolom AUTO_INCREMENT harus menjadi kolom pertama. Mesin penyimpanan yang mengizinkan kolom ditempatkan di tempat lain adalah Aria, MyISAM, MERGE, Spider, TokuDB, BLACKHOLE, FederatedX, dan Federated
CREATE TABLE animals ( id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id) ); INSERT INTO animals (name) VALUES ('dog'),('cat'),('penguin'), ('fox'),('whale'),('ostrich'); SELECT * FROM animals; +----+---------+ | id | name | +----+---------+ | 1 | dog | | 2 | cat | | 3 | penguin | | 4 | fox | | 5 | whale | | 6 | ostrich | +----+---------+SELECT * FROM animals; +----+---------+ | id | name | +----+---------+ | 1 | dog | | 2 | cat | | 3 | penguin | | 4 | fox | | 5 | whale | | 6 | ostrich | +----+---------+ 4 adalah alias untuk SELECT * FROM animals; +----+---------+ | id | name | +----+---------+ | 1 | dog | | 2 | cat | | 3 | penguin | | 4 | fox | | 5 | whale | | 6 | ostrich | +----+---------+ 5
Mengatur atau Mengubah Nilai Auto_Increment
Anda dapat menggunakan pernyataan SELECT * FROM animals; +----+---------+ | id | name | +----+---------+ | 1 | dog | | 2 | cat | | 3 | penguin | | 4 | fox | | 5 | whale | | 6 | ostrich | +----+---------+ 6 untuk menetapkan nilai baru ke opsi tabel SELECT * FROM animals; +----+---------+ | id | name | +----+---------+ | 1 | dog | | 2 | cat | | 3 | penguin | | 4 | fox | | 5 | whale | | 6 | ostrich | +----+---------+ 7, atau menyetel variabel sistem server untuk mengubah nilai AUTO_INCREMENT berikutnya yang disisipkan oleh sesi saat ini
SELECT * FROM animals; +----+---------+ | id | name | +----+---------+ | 1 | dog | | 2 | cat | | 3 | penguin | | 4 | fox | | 5 | whale | | 6 | ostrich | +----+---------+ _9 dapat digunakan untuk melihat nilai AUTO_INCREMENT terakhir yang dimasukkan oleh sesi saat ini
ALTER TABLE animals AUTO_INCREMENT=8; INSERT INTO animals (name) VALUES ('aardvark'); SELECT * FROM animals; +----+-----------+ | id | name | +----+-----------+ | 1 | dog | | 2 | cat | | 3 | penguin | | 4 | fox | | 5 | whale | | 6 | ostrich | | 8 | aardvark | +----+-----------+ SET insert_id=12; INSERT INTO animals (name) VALUES ('gorilla'); SELECT * FROM animals; +----+-----------+ | id | name | +----+-----------+ | 1 | dog | | 2 | cat | | 3 | penguin | | 4 | fox | | 5 | whale | | 6 | ostrich | | 8 | aardvark | | 12 | gorilla | +----+-----------+InnoDB
Sampai MariaDB 10. 2. 3, InnoDB menggunakan penghitung kenaikan otomatis yang disimpan di memori. Saat server dimulai ulang, penghitung diinisialisasi ulang ke nilai tertinggi yang digunakan dalam tabel, yang membatalkan efek opsi AUTO_INCREMENT = N apa pun dalam pernyataan tabel
Dari MariaDB 10. 2. 4, pembatasan ini telah dicabut dan AUTO_INCREMENT tetap ada
Lihat juga Penanganan AUTO_INCREMENT di InnoDB
Menetapkan Nilai Eksplisit
Dimungkinkan untuk menentukan nilai untuk kolom AUTO_INCREMENT. Jika kuncinya primer atau unik, nilainya tidak boleh ada di kunci
Jika nilai baru lebih tinggi dari nilai maksimum saat ini, nilai AUTO_INCREMENT diperbarui, sehingga nilai selanjutnya akan lebih tinggi. Jika nilai baru lebih rendah dari nilai maksimum saat ini, nilai AUTO_INCREMENT tetap tidak berubah
Contoh berikut menunjukkan perilaku ini
Mesin penyimpanan ARCHIVE tidak memungkinkan untuk memasukkan nilai yang lebih rendah dari maksimum saat ini
Nilai yang hilang
Kolom AUTO_INCREMENT biasanya memiliki nilai yang hilang. Ini terjadi karena jika sebuah baris dihapus, atau nilai AUTO_INCREMENT diperbarui secara eksplisit, nilai lama tidak akan pernah digunakan kembali. Pernyataan REPLACE juga menghapus satu baris, dan nilainya terbuang sia-sia. Dengan InnoDB, nilai dapat dipesan melalui transaksi;
Jadi nilai AUTO_INCREMENT dapat digunakan untuk mengurutkan hasil dalam urutan kronologis, tetapi tidak untuk membuat urutan numerik
Untuk membuat master-master atau Galera aman digunakan AUTO_INCREMENT seseorang harus menggunakan variabel sistem dan menghasilkan nilai unik untuk setiap server