Cara menggunakan syntax auto increment mysql

09/08/2014    Aulia Rahmah Alhafidz    37711    Website

Hai semuanya apa kabar :) Alter table biasa digunakan untuk merubah table beserta isinya. Tetapi, apa kalian tau alter table bisa digunakan untuk mereset sebuah auto_increment? Apa maksud dari mereset auto increment? Saya beri contoh, ada sebuah data seperti berikut :

Lalu, saya hapus beberapa data (yang diberi tanda centang). Sehingga data menjadi seperti berikut ini :

Bisa dilihat di dalam id, nomor yang pada awalnya berurutan menjadi tidak berurutan. Ya mungkin ini tak masalah karena masing-masing telah mempunyai id yang berbeda. Tapi bagaimana jika ingin mengurutnya kembali memulai dari 0 - 6 (Sesuai data di atas)?

Ada beberapa cara diantaranya :

1. Menghapus field id dengan menggunakan perintah berikut :

ALTER TABLE nama_tabel DROP nama_field

2. Data id akan terhapus dan menyisakan field nama saja.

3. Buat perintah seperti ini dan jalankan.

ALTER TABLE nama_tabel ADD nama_field INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST

4. Sekarang data sudah berurut dari 1-6.

Cara melanjutkan nilai auto increment

1. Sekarang data yang sudah ada dihapus 1 yang memiliki id 6. Dan menjadi seperti berikut :

2. Setelah dimasukkan 1 data baru, id bukan menjadi 6, tetapi menjadi 7 seperti berikut :

3. Lalu bagaimana agar idnya menjadi 6 atau melanjutkan id berikutnya? Hapus data yang baru dimasukkan tadi. Lalu, Ketikkan perintah ini di tab SQL :

ALTER TABLE nama_tabel AUTO_INCREMENT=0

4. Insert 1 data. Dan lihat idnya! Menjadi 6.

Yap! Selesai! Mudah ya? :) Tentu saja. Semoga bermanfaat yaa :)

No data.

The AUTO_INCREMENT attribute can be used to generate a unique identity for new rows:

CREATE TABLE animals (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
);
INSERT INTO animals (name) VALUES
    ('dog'),('cat'),('penguin'),
    ('lax'),('whale'),('ostrich');
SELECT * FROM animals;

Which returns:

+----+---------+
| id | name    |
+----+---------+
|  1 | dog     |
|  2 | cat     |
|  3 | penguin |
|  4 | lax     |
|  5 | whale   |
|  6 | ostrich |
+----+---------+

No value was specified for the AUTO_INCREMENT column, so MySQL assigned sequence numbers automatically. You can also explicitly assign 0 to the column to generate sequence numbers, unless the NO_AUTO_VALUE_ON_ZERO SQL mode is enabled. For example:

INSERT INTO animals (id,name) VALUES(0,'groundhog');

If the column is declared NOT NULL, it is also possible to assign NULL to the column to generate sequence numbers. For example:

INSERT INTO animals (id,name) VALUES(NULL,'squirrel');

When you insert any other value into an AUTO_INCREMENT column, the column is set to that value and the sequence is reset so that the next automatically generated value follows sequentially from the largest column value. For example:

INSERT INTO animals (id,name) VALUES(100,'rabbit');
INSERT INTO animals (id,name) VALUES(NULL,'mouse');
SELECT * FROM animals;
+-----+-----------+
| id  | name      |
+-----+-----------+
|   1 | dog       |
|   2 | cat       |
|   3 | penguin   |
|   4 | lax       |
|   5 | whale     |
|   6 | ostrich   |
|   7 | groundhog |
|   8 | squirrel  |
| 100 | rabbit    |
| 101 | mouse     |
+-----+-----------+

Updating an existing AUTO_INCREMENT column value in an InnoDB table does not reset the AUTO_INCREMENT sequence as it does for MyISAM and NDB tables.

You can retrieve the most recent automatically generated AUTO_INCREMENT value with the LAST_INSERT_ID() SQL function or the mysql_insert_id() C API function. These functions are connection-specific, so their return values are not affected by another connection which is also performing inserts.

Use the smallest integer data type for the AUTO_INCREMENT column that is large enough to hold the maximum sequence value you need. When the column reaches the upper limit of the data type, the next attempt to generate a sequence number fails. Use the UNSIGNED attribute if possible to allow a greater range. For example, if you use TINYINT, the maximum permissible sequence number is 127. For TINYINT UNSIGNED, the maximum is 255. See Integer Types (Exact Value) - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT for the ranges of all the integer types.

Note

For a multiple-row insert, LAST_INSERT_ID() and mysql_insert_id() actually return the AUTO_INCREMENT key from the first of the inserted rows. This enables multiple-row inserts to be reproduced correctly on other servers in a replication setup.

To start with an AUTO_INCREMENT value other than 1, set that value with CREATE TABLE or ALTER TABLE, like this:

mysql> ALTER TABLE tbl AUTO_INCREMENT = 100;

MyISAM Notes

  • For MyISAM tables, you can specify AUTO_INCREMENT on a secondary column in a multiple-column index. In this case, the generated value for the AUTO_INCREMENT column is calculated as MAX(auto_increment_column) + 1 WHERE prefix=given-prefix. This is useful when you want to put data into ordered groups.

    CREATE TABLE animals (
        grp ENUM('fish','mammal','bird') NOT NULL,
        id MEDIUMINT NOT NULL AUTO_INCREMENT,
        name CHAR(30) NOT NULL,
        PRIMARY KEY (grp,id)
    ) ENGINE=MyISAM;
    INSERT INTO animals (grp,name) VALUES
        ('mammal','dog'),('mammal','cat'),
        ('bird','penguin'),('fish','lax'),('mammal','whale'),
        ('bird','ostrich');
    SELECT * FROM animals ORDER BY grp,id;

    Which returns:

    +--------+----+---------+
    | grp    | id | name    |
    +--------+----+---------+
    | fish   |  1 | lax     |
    | mammal |  1 | dog     |
    | mammal |  2 | cat     |
    | mammal |  3 | whale   |
    | bird   |  1 | penguin |
    | bird   |  2 | ostrich |
    +--------+----+---------+

    In this case (when the AUTO_INCREMENT column is part of a multiple-column index), AUTO_INCREMENT values are reused if you delete the row with the biggest AUTO_INCREMENT value in any group. This happens even for MyISAM tables, for which AUTO_INCREMENT values normally are not reused.

  • If the AUTO_INCREMENT column is part of multiple indexes, MySQL generates sequence values using the index that begins with the AUTO_INCREMENT column, if there is one. For example, if the animals table contained indexes PRIMARY KEY (grp, id) and INDEX (id), MySQL would ignore the PRIMARY KEY for generating sequence values. As a result, the table would contain a single sequence, not a sequence per grp value.

Further Reading

More information about AUTO_INCREMENT is available here:

  • How to assign the AUTO_INCREMENT attribute to a column: CREATE TABLE Statement, and ALTER TABLE Statement.

  • How AUTO_INCREMENT behaves depending on the NO_AUTO_VALUE_ON_ZERO SQL mode: Server SQL Modes.

  • How to use the LAST_INSERT_ID() function to find the row that contains the most recent AUTO_INCREMENT value: Information Functions.

  • Setting the AUTO_INCREMENT value to be used: Server System Variables.

  • AUTO_INCREMENT Handling in InnoDB

  • AUTO_INCREMENT and replication: Replication and AUTO_INCREMENT.

  • Server-system variables related to AUTO_INCREMENT (auto_increment_increment and auto_increment_offset) that can be used for replication: Server System Variables.

Apa itu auto increment pada MySQL?

Auto increment field pada MySQL adalah suatu tipe field integer yang secara otomatis akan bertambah nilainya jika terjadi penambahan row pada table dimana field tersebut berada.

Apa kegunaan dari auto_increment?

Atribut AUTO_INCREMENT digunakan untuk tipe data numerik (biasanya tipe data INT), dimana jika kita menetapkan sebuah kolom dengan atribut AUTO_INCREMENT, maka setiap kali kita menginputkan data, nilai pada kolom ini akan bertambah 1. Nilai pada kolom tersebut juga akan bertambah jika kita input dengan NULL atau nilai ...

Bagaimana cara reset auto_increment di dalam tabel?

Cara Mereset Auto Increment pada Database MySQL.
Menghapus field id dengan menggunakan perintah berikut : ALTER TABLE nama_tabel DROP nama_field..
Data id akan terhapus dan menyisakan field nama saja..
Buat perintah seperti ini dan jalankan. ... .
Sekarang data sudah berurut dari 1-6..

Apa itu primary key pada MySQL?

Fungsi Primary Key pada MySQL Kunci utama memungkinkan kamu untuk mengidentifikasi setiap baris di tabel. Hal ini penting dilakukan karena dapat menautkan tabel ke tabel lain yang berkaitan dengan kunci utama sebagai tautannya.