MySQL: Transaction Rollback Dan Kolom Auto Increment

Saya sudah sering memakai fitur transaction di MySQL, tapi baru beberapa hari yang lalu notice kalau ada yang nilai yang tidak kembali saat rollback. Nilai itu adalah nilai auto_increment pada kolom auto_increment. Bisa dilihat dibawah ini:
mysql> create table testauto(urutan int auto_increment primary key)engine=InnoDb;
Query OK, 0 rows affected (1.84 sec)

mysql> show create table testauto\G
*************************** 1. row ***************************
       Table: testauto
Create Table: CREATE TABLE `testauto` (
  `urutan` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`urutan`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into testauto(urutan) values(null);
Query OK, 1 row affected (0.00 sec)

mysql> select last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
|                1 |
+------------------+
1 row in set (0.02 sec)

mysql> rollback;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from testauto;
Empty set (0.00 sec)

mysql> insert into testauto(urutan) values(null);
Query OK, 1 row affected (0.00 sec)

mysql> select last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
|                2 |
+------------------+
1 row in set (0.00 sec)
Setelah membaca beberapa referensi, ternyata hal ini sudah dilaporkan sebagai bug sejak November 2004 (Bug #6714). Namun status dari bug tersebut adalah Won't fix, dikarenakan apabila nilai auto_increment di rollback akan muncul gap pada urutan yang dibuat seperti yang dituliskan pada komentar bug ini.
Solusinya? Pertama, bisa buat custom auto_increment dengan stored procedure atau trigger. Kedua, biarkan saja, toh auto_increment itu nilai maksimalnya besar dan jika masih kurang bisa pakai big int sebagai tipe data kolom tersebut.