ให้เราเข้าใจว่า ATUO_INCREMENT ทำงานอย่างไร -
แอตทริบิวต์ AUTO_INCREMENT ใช้เพื่อสร้างข้อมูลระบุเฉพาะสำหรับแถวใหม่ เรามาดูกันว่าคำกล่าวนี้ทำงานอย่างไร ก่อนหน้านั้น พิจารณาคำถามด้านล่าง −
สอบถาม
CREATE TABLE tableName ( id MEDIUMINT NOT NULL AUTO_INCREMENT ชื่อ CHAR(30) ไม่ใช่ NULL คีย์หลัก (id));INSERT INTO tableName (name) VALUES('val1'),('val2'),('val3 '),('val4');SELECT * FROM tableName;
ผลลัพธ์
<ก่อนหน้า>+----+---------+| id | ชื่อ |+----+---------+| 1 | val1 || 2 | val2 || 3 | val3 || 4 | val4 |+---+---------+ในแบบสอบถามข้างต้น ไม่ได้ระบุค่าสำหรับคอลัมน์ 'AUTO_INCREMENT' ดังนั้น MySQL จึงกำหนดลำดับของตัวเลขให้กับคอลัมน์ 'id' โดยอัตโนมัติ นอกจากนี้ยังสามารถกำหนดค่า 0 อย่างชัดเจนเพื่อให้ลำดับตัวเลขเริ่มต้นจาก 0 ซึ่งสามารถทำได้ก็ต่อเมื่อไม่ได้เปิดใช้งานโหมด SQL 'NO AUTO VALUE ON ZERO'
-
หากคอลัมน์ถูกประกาศเป็น 'NOT NULL' เป็นไปได้ที่จะกำหนด NULL ให้กับคอลัมน์นั้นเพื่อสร้างลำดับของตัวเลข
-
เมื่อค่าใดๆ ถูกแทรกลงในคอลัมน์ AUTO_INCREMENT คอลัมน์จะถูกตั้งค่าเป็นค่านั้น และลำดับยังได้รับการรีเซ็ตเพื่อสร้างค่าโดยอัตโนมัติในช่วงที่เรียงตามลำดับจากค่าคอลัมน์ที่ใหญ่ที่สุด
-
คอลัมน์ "AUTO_INCREMENT" ที่มีอยู่สามารถอัปเดตได้ ซึ่งจะรีเซ็ตลำดับ "AUTO_INCREMENT" ด้วยเช่นกัน
-
'AUTO_INCREMENT' ที่สร้างขึ้นโดยอัตโนมัติล่าสุด สามารถดึงค่าได้โดยใช้ฟังก์ชัน 'LAST_INSERT_ID()' ใน SQL หรือใช้ 'mysql_insert_id()' ซึ่งเป็นฟังก์ชัน C API
-
ฟังก์ชันเหล่านี้เป็นฟังก์ชันเฉพาะของการเชื่อมต่อ ซึ่งหมายความว่าค่าที่ส่งคืนจะไม่ได้รับผลกระทบจากการเชื่อมต่ออื่นๆ ที่ดำเนินการแทรก
-
สามารถใช้ชนิดข้อมูลจำนวนเต็มที่น้อยที่สุดสำหรับคอลัมน์ 'AUTO_INCREMENT' ได้ ซึ่งจะมีขนาดใหญ่พอที่จะเก็บค่าลำดับสูงสุดที่ผู้ใช้ต้องการได้
-
เมื่อคอลัมน์ถึงช่วงบนของชนิดข้อมูล จะมีการพยายามสร้างลำดับของตัวเลขอีกครั้ง แต่สิ่งนี้ล้มเหลว
ดังนั้น ให้ใช้แอตทริบิวต์ UNSIGNED หากเป็นไปได้เพื่อให้มีค่าช่วงที่มากขึ้นในค่าคอลัมน์ AUTO_INCREMENT