เมื่อใดก็ตามที่เรากำหนดหมายเลขใหม่ อาจมีปัญหา จำเป็นต้องประกาศ ID เฉพาะสำหรับคอลัมน์
ใน MySQL เวอร์ชัน 5.6 InnoDB เราสามารถนำ auto_increment ID กลับมาใช้ใหม่ได้ โดยการรวมคอลัมน์ ID ไว้ในคำสั่ง INSERT และเราสามารถให้ค่าเฉพาะใดๆ ที่เราต้องการได้
สถานการณ์มีดังนี้ −
- เมื่อใดก็ตามที่เราลบ ID ที่มีตัวเลขสูงสุด
- เมื่อใดก็ตามที่เราเริ่มและหยุดเซิร์ฟเวอร์ MySQL
- เมื่อใดก็ตามที่เราใส่บันทึกใหม่
ตัวอย่างการเพิ่ม ID อัตโนมัติโดยใช้ตัวแปร auto_increment
mysql> สร้างตาราง UniqueAutoId -> ( -> id int auto_increment, -> Unique(id) -> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.45 วินาที)
กำลังแทรกระเบียนลงในตาราง
mysql> แทรกลงในค่า UniqueAutoId (); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.13 วินาที) mysql> แทรกลงในค่า UniqueAutoId (); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที) mysql> แทรกลงในค่า UniqueAutoId (); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.07 วินาที)mysql> แทรกลงในค่า UniqueAutoId ();แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.10 วินาที)mysql> แทรกลงในค่า UniqueAutoId (); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.10 วินาที)ก่อน>กำลังแสดงรายการทั้งหมด
mysql> เลือก *จาก UniqueAutoId;ต่อไปนี้เป็นผลลัพธ์
<ก่อนหน้า>+----+| id |+---+| 1 || 2 || 3 || 4 || 5 |+----+5 แถวในชุด (0.00 วินาที)
ในการลบบันทึก เราใช้คำสั่ง DELETE เรากำลังลบ id=5;
mysql> ลบออกจาก UniqueAutoId โดยที่ id=5;Query OK ได้รับผลกระทบ 1 แถว (0.14 วินาที)
กำลังแสดงรายการทั้งหมด
mysql> เลือก *จาก UniqueAutoId;
ต่อไปนี้เป็นผลลัพธ์
<ก่อนหน้า>+----+| id |+---+| 1 || 2 || 3 || 4 |+----+4 แถวในชุด (0.00 วินาที)ให้เราลบบันทึกออกจากตารางอีกครั้ง
mysql> ลบออกจาก UniqueAutoId โดยที่ id=2;Query OK ได้รับผลกระทบ 1 แถว (0.15 วินาที)
แสดงบันทึกจากตารางอีกครั้ง
mysql> เลือก *จาก UniqueAutoId;
ต่อไปนี้เป็นผลลัพธ์
<ก่อนหน้า>+----+| id |+---+| 1 || 3 || 4 |+----+3 แถวในชุด (0.00 วินาทีข้างต้นส่งผลให้เกิดการกระจายตัว