Menggunakan Urutan MySQL

Urutan adalah sekumpulan bilangan bulat 1, 2, 3, ... yang dihasilkan dalam urutan pada permintaan tertentu. Urutan sering digunakan dalam database karena banyak aplikasi mengharuskan setiap baris dalam tabel berisi nilai unik dan urutan menyediakan cara mudah untuk membuatnya.

Bab ini menjelaskan cara menggunakan urutan di MySQL.

Menggunakan Kolom AUTO_INCREMENT

Cara termudah di MySQL untuk menggunakan Urutan adalah dengan mendefinisikan kolom sebagai AUTO_INCREMENT dan serahkan hal-hal yang tersisa ke MySQL untuk mengurusnya.

Contoh

Coba contoh berikut. Ini akan membuat tabel dan setelah itu akan menyisipkan beberapa baris dalam tabel ini di mana tidak perlu memberikan ID catatan karena bertambah otomatis oleh MySQL.

mysql> CREATE TABLE insect
   -> (
   -> id INT UNSIGNED NOT NULL AUTO_INCREMENT,
   -> PRIMARY KEY (id),
   -> name VARCHAR(30) NOT NULL, # type of insect
   -> date DATE NOT NULL, # date collected
   -> origin VARCHAR(30) NOT NULL # where collected
);
Query OK, 0 rows affected (0.02 sec)
mysql> INSERT INTO insect (id,name,date,origin) VALUES
   -> (NULL,'housefly','2001-09-10','kitchen'),
   -> (NULL,'millipede','2001-09-10','driveway'),
   -> (NULL,'grasshopper','2001-09-10','front yard');
Query OK, 3 rows affected (0.02 sec)
Records: 3  Duplicates: 0  Warnings: 0
mysql> SELECT * FROM insect ORDER BY id;
+----+-------------+------------+------------+
| id |    name     |    date    |   origin   |
+----+-------------+------------+------------+
|  1 |  housefly   | 2001-09-10 |   kitchen  |
|  2 |  millipede  | 2001-09-10 |  driveway  |
|  3 | grasshopper | 2001-09-10 | front yard |
+----+-------------+------------+------------+
3 rows in set (0.00 sec)

Dapatkan Nilai AUTO_INCREMENT

Itu LAST_INSERT_ID( )adalah fungsi SQL, sehingga Anda dapat menggunakannya dari dalam klien mana pun yang memahami cara mengeluarkan pernyataan SQL. Jika tidak, PERL dan skrip PHP menyediakan fungsi eksklusif untuk mengambil nilai auto increment dari rekaman terakhir.

Contoh PERL

Menggunakan mysql_insertid atribut untuk mendapatkan AUTO_INCREMENTnilai yang dihasilkan oleh kueri. Atribut ini diakses melalui pegangan database atau pegangan pernyataan, tergantung pada bagaimana Anda mengeluarkan kueri.

Contoh berikut mereferensikannya melalui pegangan database.

$dbh->do ("INSERT INTO insect (name,date,origin)
VALUES('moth','2001-09-14','windowsill')");
my $seq = $dbh->{mysql_insertid};

Contoh PHP

Setelah mengeluarkan kueri yang menghasilkan nilai AUTO_INCREMENT, ambil nilai dengan memanggil mysql_insert_id( ) perintah.

mysql_query ("INSERT INTO insect (name,date,origin)
VALUES('moth','2001-09-14','windowsill')", $conn_id);
$seq = mysql_insert_id ($conn_id);

Penomoran Ulang Urutan yang Ada

Mungkin ada kasus ketika Anda telah menghapus banyak rekaman dari tabel dan Anda ingin mengurutkan ulang semua rekaman. Ini dapat dilakukan dengan menggunakan trik sederhana, tetapi Anda harus sangat berhati-hati melakukannya jika tabel Anda memiliki sambungan dengan tabel lainnya.

Jika Anda menentukan bahwa pengurutan ulang kolom AUTO_INCREMENT tidak dapat dihindari, cara untuk melakukannya adalah dengan melepaskan kolom dari tabel, lalu menambahkannya lagi.

Contoh berikut menunjukkan cara menomori ulang id values di tabel menggunakan teknik ini.

mysql> ALTER TABLE insect DROP id;
mysql> ALTER TABLE insect
   -> ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST,
   -> ADD PRIMARY KEY (id);

Memulai Urutan pada Nilai Tertentu

Secara default, MySQL akan memulai urutan dari 1, tetapi Anda juga dapat menentukan nomor lain pada saat pembuatan tabel.

Program berikut adalah contoh yang menunjukkan bagaimana MySQL akan memulai urutan dari 100.

mysql> CREATE TABLE insect
   -> (
   -> id INT UNSIGNED NOT NULL AUTO_INCREMENT = 100,
   -> PRIMARY KEY (id),
   -> name VARCHAR(30) NOT NULL, # type of insect
   -> date DATE NOT NULL, # date collected
   -> origin VARCHAR(30) NOT NULL # where collected
);

Alternatifnya, Anda dapat membuat tabel dan kemudian mengatur nilai urutan awal dengan ALTER TABLE perintah.

mysql> ALTER TABLE t AUTO_INCREMENT = 100;