SAP HANA - Urutan SQL

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

Menggunakan kolom AUTO_INCREMENT

Cara termudah di MySQL untuk menggunakan urutan adalah dengan mendefinisikan kolom sebagai AUTO_INCREMENT dan menyerahkan hal-hal lainnya ke MySQL untuk diurus.

Contoh

Coba contoh berikut. Ini akan membuat tabel dan setelah itu akan menyisipkan beberapa baris di tabel ini di mana tidak diperlukan untuk 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

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 yang bertambah otomatis dari catatan terakhir.

Contoh PERL

Gunakan atribut mysql_insertid untuk mendapatkan nilai AUTO_INCREMENT 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 () -

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 bisa dilakukan dengan menggunakan trik sederhana tetapi Anda harus sangat berhati-hati melakukannya jika tabel Anda memiliki sambungan, dengan tabel lain.

Jika Anda menentukan bahwa urutan ulang kolom AUTO_INCREMENT tidak dapat dihindari, cara untuk melakukannya adalah dengan melepaskan kolom dari tabel, lalu menambahkannya lagi. Contoh berikut menunjukkan bagaimana menomori ulang nilai id dalam tabel serangga 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. Berikut adalah contoh di mana 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.