Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

AUTO_INCREMENT ใน MySQL เป็น Signed โดยค่าเริ่มต้นหรือไม่?

ใช่ คอลัมน์ AUTO_INCREMENT ใน MySQL จะเป็น SIGNED (รองรับทั้งค่าบวกและลบ) โดยค่าเริ่มต้น

ตัวอย่างยืนยัน

1. สร้างตาราง AUTO_INCREMENT

mysql> create table DemoTable 
    -> ( 
    -> MyNumber int AUTO_INCREMENT PRIMARY KEY 
    -> ); 
Query OK, 0 rows affected (0.45 sec)

2. แทรกข้อมูล รวมค่าลบ

mysql> insert into DemoTable values();        -- Auto: 1
mysql> insert into DemoTable values(-100);   -- ระบุค่าลบ
mysql> insert into DemoTable values(-300);   -- ระบุค่าลบ
mysql> insert into DemoTable values(0);      -- 0 ถือเป็นค่าว่าง จะได้ค่า Auto ถัดไป

ผลลัพธ์

+----------+
| MyNumber |
+----------+
| -300     |
| -100     |
| 1        |
| 2        |
+----------+

ข้อสังเกตสำคัญ

  • ค่าลบที่ระบุเองจะไม่ส่งผลต่อลำดับ Auto Increment ปกติ
  • ค่า 0 หรือ NULL จะทริกเกอร์ให้สร้างค่า Auto ถัดไป
  • ค่าสูงสุดของ SIGNED INT คือ 2147483647 หากต้องการมากกว่า ใช้ BIGINT
  • หากต้องการเฉพาะค่าบวก ให้เพิ่ม UNSIGNED: INT UNSIGNED AUTO_INCREMENT