คำสั่ง auto id เวลาเพิ่มทำไม่ได้แค่ 10 แล้ไม่เพิ่มอีกใครรู้บ้างครับ
ลอง สร้าง ฐานข้อมูลใหม่ครับ เลือกเปน int ก้อได้ ๆ ลองดู มันทำไห้ ตั้ง 11 หลัก นะ
Date :
2010-04-12 08:19:35
By :
deathzap
ถ้าดึงตัวสุดมาบวกกันโดยที่ฟิวเป็นสตริงมันจะเป็นแบบนี้
1
10
2
3
4
5
6
7
8
9
พอจะเพิ่มตัวที่ 11 มันก็จะดึง 9 ซึ่งเป็นตัวสุดท้ายของตอนนี้ เป็น 9+1 ก็ได้ 10 ซึ่ง 10 มีแล้วอยู่อันแรกๆเลยใช่ป่ะแล้วมันก็จะฟ้องว่า PK ของคุณมันชนกัน
ทำให้ไม่สามารถเพิ่มได้เกิน 10 วิธีแก้ก็
1. เลือกเป็นฟิวเป็น int ตามที่คุณ deathzap บอก หรือ
2. เลือกฟิวเป็น varchar เหมือนเดิม แต่คุณต้องทำ Auto ID ใหม่ โดยอาจจะใช้อักษรนำหน้าสัก 1 ตัวก็ได้แล้วทำการเติม 0 ต่อหน้าตัวเลข
โดยเลือกเรคคอร์ดสุดท้ายแล้วตัดเอาหลักที่ 3 หรือหลักอื่นก็ได้ ถึงหลักสุดท้าย + 1 แล้วมาเติมด้วย 0 นำหน้า เช่น ใน DB เป็น
C0001
C0002
ตัดเอาหลักที่ 3 ของเรคคอร์ดสุดท้าย จะได้ 2 + 1 แล้วเอา 0 มาต่อข้างหน้าสัก 2 หลักก็จะได้ไอดีตอนนี้เป็น 003 จากตัวอย่างใน DB เก็บโดยใช้ C นำหน้า
คุณก็เอาอักษร C มาต่อกับ ID ที่ได้เมื่อสักครู่ก็จะเป็น C003 ต่อไป ID ก็จะไม่ชนกันแล้ว
*ที่ใส่ C นี้มันก็มีประโยน์นะ เพื่อเราดูรหัสก็จะได้รู้ว่า C0001 มาจาก ตารางลูกค้า (Customer) หรือ E0001 มาจากตารางพนังงาน (Employee) ประมาณนี้ แต่ถ้าคุณใช้ int มันจะเป็น 1,2,3...ไปเรื่อยๆพอมาวิเคราะห์รหัสก็จะไม่รู้ว่าเอ้มันมาจากตารางไหนวะ ประมาณนี้ครับ
Date :
2010-04-13 01:32:34
By :
chineji
ปรับ data type เป็น int ไป แล้วเลือก auto increment ก็ได้นิครับ ในกรณีใช้ phpMyAdmin เป็นตัวจัดการฐานข้อมูลน่ะ
ถ้าใช้ tool อื่นๆช่วย ก็คล้ายๆกันครับ อย่าลืมตั้งให้เป็น PK ด้วย
มันก็จะ auto id ให้อัตโนมัติ เลย โดยที่เราไม่ต้องไปยุ่ง
เช่น tb_emp มี 3ฟิล คือ
emp_id (pk) int(11) และเป็น auto increment
emp_name varchar(50)
emp_tel varchar(20)
เวลาเพิ่ม ข้อมูลลง table นี้ก็
INSERT INTO tb_emp( emp_name,emp_tel ) VALUE (AAA,0801234567)
แค่นี้มันก็ จะ auto id ให้เองเรียงต่อไปได้เรื่อยๆเลยครับ
Date :
2010-04-13 10:44:02
By :
kalawa
Load balance : Server 04