Bisakah kita memiliki 2 peningkatan otomatis di mysql?

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

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.

Bisakah kita memiliki 2 peningkatan otomatis di mysql?

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 otomatis

Sekarang 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_INCREMENT

Untuk 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_INCREMENT

Secara 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_INCREMENT

Ada beberapa cara untuk mereset nilai AUTO_INCREMENT

  1. Anda dapat meresetnya dengan menggunakan pernyataan ALTER TABLE. Sintaks pernyataan ALTER TABLE untuk mereset nilai kenaikan otomatis adalah sebagai berikut
 
    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

  1. Pernyataan TRUNCATE TABLE dapat digunakan untuk mereset nilai kenaikan otomatis ke nol
 
    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 Terakhir

Anda 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 Kolom

Untuk 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

Kesimpulan

Kolom 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 .