Menggunakan AUTO_INCREMENT


Atribut AUTO_INCREMENT dapat digunakan untuk menghasilkan sebuah identitas unik untuk baris baru:

mysql> CREATE TABLE animals (
-> id MEDIUMINT NOT NULL AUTO_INCREMENT,
-> name CHAR(30) NOT NULL,
-> PRIMARY KEY (id)
-> )ENGINE=MyISAM;

mysql> INSERT INTO animals (name) VALUES (‘dog’), (‘cat’), (‘penguin’),
-> (‘lax’), (‘whale’), (‘ostrich’);

Tidak ada nilai yang ditentukan untuk kolom AUTO_INCREMENT, sehingga MySQL memberikan nomor urut secara otomatis. Anda juga dapat secara eksplisit menetapkan NULL atau 0 untuk kolom untuk menghasilkan nomor urut.

Anda dapat mengambil nilai AUTO_INCREMENT terbaru dengan fungsi SQL LAST_INSERT_ID() atau mysql_insert_id() fungsi API C. Fungsi-fungsi ini koneksi yang spesifik, sehingga nilai-nilai kembali mereka tidak terpengaruh oleh koneksi lain yang juga melakukan sisipan.

Gunakan tipe data integer yang cukup besar untuk kolom AUTO_INCREMENT untuk menampung nilai urutan maksimum yang perlu.
Ketika kolom mencapai batas atas tipe data, upaya berikutnya untuk menghasilkan nomor urut gagal. Misalnya, jika anda menggunakan TINYINT, nomor urut maksimum yang diijinkan adalah 127. Untuk unsigned TINYINT, maksimum adalah 255.

catatan
Untuk menyisipkan beberapa baris, LAST_INSERT_ID () dan mysql_insert_id () benar-benar mengembalikan key AUTO_INCREMENT dari baris pertama dimasukkan. Hal ini memungkinkan beberapa baris insert untuk direproduksi dengan benar pada server lain dalam sebuah pengaturan replikasi.

Untuk tabel MyISAM anda bisa menetapkan AUTO_INCREMENT pada kolom sekunder dalam indeks multiple-column. Dalam kasus ini, nilai yang dihasilkan untuk kolom AUTO_INCREMENT dihitung sebagai MAX (auto_increment_column) + 1 = WHERE prefix=prefix_yang_diberikan. Hal ini berguna bila anda ingin memasukkan data ke dalam ordered group.

mysql> CREATE TABLE animals2 (
-> grp ENUM(‘fish’, ‘mammal’, ‘bird’) NOT NULL,
-> id MEDIUMINT NOT NULL AUTO_INCREMENT,
-> name CHAR(30) NOT NULL,
-> PRIMARY KEY (grp,id)
-> )ENGINE=MyISAM;

mysql> INSERT INTO animals2 (grp,name) VALUES
-> (‘mammal’, ‘dog’), (‘mammal’, ‘cat’),
-> (‘bird’, ‘penguin’), (‘fish’, ‘lax’), (‘mammal’, ‘whale’),
-> (‘bird’, ‘ostrich’);

mysql> SELECT * FROM animals2 ORDER BY grp,id;

Dalam hal ini (ketika kolom AUTO_INCREMENT merupakan bagian dari indeks multiple-column), nilai AUTO_INCREMENT digunakan kembali jika anda menghapus baris dengan nilai AUTO_INCREMENT terbesar dalam kelompok manapun. Hal ini terjadi bahkan untuk tabel MyISAM, dimana nilai AUTO_INCREMENT biasanya tidak digunakan kembali.

Jika kolom AUTO_INCREMENT merupakan bagian dari beberapa indeks, MySQL akan menghasilkan nilai urutan menggunakan indeks yang dimulai dengan kolom AUTO_INCREMENT, jika ada satu. Misalnya, jika tabel animals2 terkandung indeks PRIMARY KEY (grp, id) dan INDEX (id), MySQL akan mengabaikan PRIMARY KEY untuk menghasilkan nilai urutan. Akibatnya, tabel akan berisi urutan tunggal, bukan urutan per nilai grp.

Untuk memulai dengan nilai AUTO_INCREMENT selain 1, anda dapat mengatur nilai itu dengan CREATE TABLE atau ALTER TABLE, seperti ini:

mysql> ALTER TABLE nama_tabel AUTO_INCREMENT = 100;

Iklan
  1. No trackbacks yet.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: