Peningkatan Otomatis adalah fungsi yang beroperasi pada tipe data numerik. Ini secara otomatis menghasilkan nilai numerik berurutan setiap kali catatan dimasukkan ke dalam tabel untuk bidang yang didefinisikan sebagai peningkatan otomatis Show
Kapan menggunakan peningkatan otomatis?Dalam pelajaran tentang normalisasi basis data, kita melihat bagaimana data dapat disimpan dengan redundansi minimal, dengan menyimpan data ke dalam banyak tabel kecil, yang saling terkait menggunakan kunci primer dan kunci asing. Kunci utama harus unik karena secara unik mengidentifikasi baris dalam database. Namun, bagaimana kita memastikan bahwa primary key selalu unik? . Ini mungkin bekerja dengan baik tetapi seperti yang Anda lihat, pendekatannya rumit dan tidak mudah. Untuk menghindari kompleksitas seperti itu dan untuk memastikan bahwa primary key selalu unik, kita dapat menggunakan fitur Auto increment MySQL untuk menghasilkan primary key. Peningkatan otomatis digunakan dengan tipe data INT. Tipe data INT mendukung nilai yang ditandatangani dan tidak ditandatangani. Tipe data yang tidak ditandatangani hanya dapat berisi angka positif. Sebagai praktik terbaik, disarankan untuk menentukan batasan yang tidak ditandatangani pada kunci primer kenaikan otomatis Sintaks kenaikan otomatisSekarang mari kita lihat skrip yang digunakan untuk membuat tabel kategori film CREATE TABLE `categories` ( `category_id` int(11) AUTO_INCREMENT, `category_name` varchar(150) DEFAULT NULL, `remarks` varchar(500) DEFAULT NULL, PRIMARY KEY (`category_id`) ); Perhatikan “AUTO_INCREMENT” pada bidang category_id. Hal ini menyebabkan ID kategori dihasilkan secara otomatis setiap kali baris baru dimasukkan ke dalam tabel. Itu tidak disediakan saat memasukkan data ke dalam tabel, MySQL menghasilkannya Secara default, nilai awal untuk AUTO_INCREMENT adalah 1, dan akan bertambah 1 untuk setiap record baru Mari kita periksa isi tabel kategori saat ini SELECT * FROM `categories`;_ Menjalankan skrip di atas di meja kerja MySQL terhadap myflixdb memberi kita hasil sebagai berikut category_id category_name remarks 1 Comedy Movies with humour 2 Romantic Love stories 3 Epic Story acient movies 4 Horror NULL 5 Science Fiction NULL 6 Thriller NULL 7 Action NULL 8 Romantic Comedy NULL Mari sekarang masukkan kategori baru ke dalam tabel kategori INSERT INTO `categories` (`category_name`) VALUES ('Cartoons'); Menjalankan skrip di atas terhadap myflixdb di meja kerja MySQL memberi kita hasil berikut yang ditunjukkan di bawah ini category_id category_name remarks 1 Comedy Movies with humour 2 Romantic Love stories 3 Epic Story acient movies 4 Horror NULL 5 Science Fiction NULL 6 Thriller NULL 7 Action NULL 8 Romantic Comedy NULL 9 Cartoons NULL_ Perhatikan bahwa kami tidak menyediakan id kategori. MySQL secara otomatis membuatnya untuk kita karena id kategori didefinisikan sebagai peningkatan otomatis Jika Anda ingin mendapatkan id penyisipan terakhir yang dibuat oleh MySQL, Anda dapat menggunakan fungsi LAST_INSERT_ID untuk melakukannya. Skrip yang ditunjukkan di bawah ini mendapatkan id terakhir yang dihasilkan SELECT LAST_INSERT_ID(); Menjalankan skrip di atas memberikan nomor kenaikan Otomatis terakhir yang dihasilkan oleh kueri INSERT. Hasilnya ditunjukkan di bawah ini Peningkatan otomatis memungkinkan nomor unik dihasilkan secara otomatis setiap kali catatan baru dimasukkan ke dalam tabel. Fitur ini sangat berguna terutama di bidang kunci utama sehingga kunci dapat disetel secara otomatis setiap kali ada catatan baru yang dimasukkan. Meskipun penambahan otomatis dapat sesederhana menyetel dan melupakannya, ada kalanya Anda mungkin ingin mengelola kolom AUTO_INCREMENT untuk menyetel nomor awal atau mungkin melewatkan nilai tertentu. Dalam artikel ini, Anda akan mempelajari cara menggunakan kolom AUTO_INCREMENT di MySQL, serta menjelajahi beberapa kasus penggunaan yang tidak biasa Mendeklarasikan Jenis Kolom AUTO_INCREMENTUntuk membuat kolom yang bertambah secara otomatis, cukup tetapkan atribut AUTO_INCREMENT padanya. Biasanya, bidang AUTO_INCREMENT adalah jenis bilangan bulat dan dinyatakan sebagai kolom kunci utama tabel CREATE TABLE widgets ( id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, description VARCHAR(255) NULL, PRIMARY KEY (id) ); Anda harus menggunakan tipe data bilangan bulat terkecil untuk kolom AUTO_INCREMENT yang cukup besar untuk menampung nilai urutan maksimum yang Anda harapkan dapat diakomodasi. Jika kolom mencapai batas atas tipe data, upaya selanjutnya untuk menghasilkan nomor urut akan gagal. Anda selalu dapat menyertakan atribut UNSIGNED untuk memungkinkan rentang yang lebih besar. Misalnya, jika Anda menggunakan TINYINT, nomor urut maksimum yang diperbolehkan hanyalah 127. Untuk TINYINT UNSIGNED, maksimum bertambah menjadi 255. Jenis Integer termasuk INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, dan BIGINT Kolom AUTO_INCREMENT akan bertambah satu setiap kali baris baru disisipkan, jadi Anda tidak perlu memasukkannya ke dalam pernyataan INSERT Anda INSERT INTO widgets (name, description) VALUES ('widget 1', 'The first widget'), CREATE TABLE widgets (0 CREATE TABLE widgets (1 Memilih isi tabel widget akan mengembalikan tiga baris dengan nilai id masing-masing 1, 2, dan 3 CREATE TABLE widgets (3 CREATE TABLE widgets (5 CREATE TABLE widgets (6 CREATE TABLE widgets (5 CREATE TABLE widgets (8 CREATE TABLE widgets (9 id MEDIUMINT NOT NULL AUTO_INCREMENT,0 CREATE TABLE widgets (5 Mengatur Nilai Kolom AUTO_INCREMENTSecara default, kolom AUTO_INCREMENT dimulai dari 1. Anda juga dapat secara eksplisit menetapkan 0 ke kolom untuk menghasilkan nomor urut berikutnya kecuali mode NO_AUTO_VALUE_ON_ZERO SQL diaktifkan. Menetapkan NULL ke kolom juga akan menghasilkan nomor urut berikutnya, selama kolom tersebut dinyatakan NOT NULL. Oleh karena itu, semua pernyataan berikut ekuivalen id MEDIUMINT NOT NULL AUTO_INCREMENT,3 id MEDIUMINT NOT NULL AUTO_INCREMENT,4 id MEDIUMINT NOT NULL AUTO_INCREMENT,5 Catatan. mulai dari 0 tidak disarankan karena dapat menyebabkan masalah. Misalnya, jika Anda membuang tabel dengan mysqldump dan kemudian memuatnya kembali, MySQL biasanya menghasilkan nomor urut baru saat menemukan nilai 0, menghasilkan tabel dengan ID yang berbeda dari yang dibuang Saat Anda memasukkan nilai lain ke dalam kolom AUTO_INCREMENT, kolom diatur ke nilai tersebut dan urutannya diatur ulang sehingga nilai yang dihasilkan secara otomatis berikutnya mengikuti secara berurutan dari nilai kolom (terbesar) terakhir, yaitu. e id MEDIUMINT NOT NULL AUTO_INCREMENT,7 id MEDIUMINT NOT NULL AUTO_INCREMENT,8 id MEDIUMINT NOT NULL AUTO_INCREMENT,9 Mereset Nilai AUTO_INCREMENTAda beberapa cara untuk mereset nilai AUTO_INCREMENT
name CHAR(30) NOT NULL,1 Anda menentukan nama tabel setelah klausa ALTER TABLE dan nilai yang ingin Anda atur ulang dalam ekspresi );5. Perhatikan bahwa nilainya harus lebih besar dari atau sama dengan nilai maksimum saat ini dari kolom penambahan otomatis name CHAR(30) NOT NULL,3 Jika Anda memasukkan baris baru, MySQL akan memberikan nilai 6 ke kolom id dari baris baru
name CHAR(30) NOT NULL,5 Ingatlah bahwa pernyataan ini juga menghapus semua data dari tabel secara permanen, mengembalikan tabel Anda ke keadaan kosong Menentukan Nilai Kolom AUTO_INCREMENT TerakhirAnda dapat mengambil nilai AUTO_INCREMENT terbaru yang dihasilkan secara otomatis dengan fungsi SQL LAST_INSERT_ID() atau fungsi API mysql_insert_id(). Fungsi-fungsi ini khusus koneksi, sehingga nilai pengembaliannya tidak terpengaruh oleh koneksi lain yang juga melakukan penyisipan Untuk penyisipan beberapa baris, LAST_INSERT_ID() dan mysql_insert_id() kembalikan kunci AUTO_INCREMENT dari baris pertama yang disisipkan. Ini untuk mengaktifkan penyisipan beberapa baris untuk direproduksi dengan benar di server lain dalam penyiapan replikasi Tabel MyISAM dan Indeks Banyak KolomUntuk tabel MyISAM, Anda dapat menentukan AUTO_INCREMENT pada kolom sekunder dalam indeks multi-kolom. Dalam hal ini, nilai yang dihasilkan untuk kolom AUTO_INCREMENT dihitung menggunakan rumus. );6. Ini berguna saat Anda ingin memasukkan data ke dalam grup yang diurutkan CREATE TABLE widgets ( name CHAR(30) NOT NULL,8 id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, description VARCHAR(255) NULL,1________10______2 description VARCHAR(255) NULL,3 description VARCHAR(255) NULL,5 description VARCHAR(255) NULL,6 description VARCHAR(255) NULL,7 description VARCHAR(255) NULL,8__________10______9________11____1_______ Inilah yang ada di tabel widget PRIMARY KEY (id)3 PRIMARY KEY (id)5 PRIMARY KEY (id)6 PRIMARY KEY (id)5________11______8 PRIMARY KEY (id)9 );0 );1 );2________12______3 PRIMARY KEY (id)5 KesimpulanKolom MySQL AUTO_INCREMENT menyediakan cara mudah untuk menambahkan kunci primer numerik ke tabel yang dapat Anda atur dan lupakan. Selain itu, jika Anda menggunakan mesin MyISAM, Anda bahkan dapat menggunakannya sebagai bagian dari indeks multi-kolom Bisakah kita memiliki dua kenaikan otomatis di MySQL?Server MySQL sudah menyediakan dua variabel kenaikan otomatis . auto_increment_increment dan auto_increment_offset, yang dapat digunakan untuk menghasilkan nilai autoincrement yang berbeda pada setiap anggota. Edaran MySQL (MySQL 5. 0. 2 dan seterusnya) replikasi sudah menggunakan pendekatan ini, tetapi server harus dikonfigurasi secara manual.
Berapa banyak kolom kenaikan otomatis yang dapat dimiliki sebuah tabel?Setiap tabel hanya dapat memiliki satu kolom AUTO_INCREMENT. Itu harus didefinisikan sebagai kunci (tidak harus kunci UTAMA atau kunci UNIK).
Apa yang terjadi ketika peningkatan otomatis mencapai batas MySQL?Gunakan tipe data bilangan bulat terkecil untuk kolom AUTO_INCREMENT yang cukup besar untuk menampung nilai urutan maksimum yang Anda perlukan. Saat kolom mencapai batas atas tipe data, upaya selanjutnya untuk membuat nomor urut gagal .
Bagaimana saya bisa mendapatkan nomor kenaikan otomatis berikutnya di MySQL?MySQL memiliki kata kunci AUTO_INCREMENT untuk melakukan peningkatan otomatis. Nilai awal untuk AUTO_INCREMENT adalah 1, yang merupakan nilai default. Itu akan mendapatkan kenaikan sebesar 1 untuk setiap rekor baru. Untuk mendapatkan id auto increment berikutnya di MySQL, kita bisa menggunakan fungsi last_insert_id() dari MySQL atau auto_increment dengan SELECT . |