เพื่อป้องกันตัวเลขติดลบใน MySQL คุณต้องใช้ INT UNSIGNED สมมติว่าคุณสร้างตารางที่มีคอลัมน์เป็น int เช่น UserGameScores ที่นี่
mysql> สร้างตาราง preventNegativeNumberDemo -> ( -> UserId int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, -> UserName varchar(20), -> UserGameScores int -> );Query OK, 0 แถวได้รับผลกระทบ (1.74 วินาที)
ตอนนี้ ถ้าคุณต้องการป้องกันตัวเลขติดลบ ให้แก้ไขคอลัมน์เดียวกันกับ INT UNSIGNED
mysql> แก้ไขตารางป้องกันNegativeNumberDemo แก้ไขคอลัมน์ UserGameScores INT UNSIGNED NOT NULL ตกลง ตกลง 0 แถวได้รับผลกระทบ (3.32 วินาที) บันทึก:0 รายการซ้ำ:0 คำเตือน:0
ตรวจสอบคำอธิบายตารางอีกครั้ง
แบบสอบถามมีดังนี้
mysql> desc ป้องกันNegativeNumberDemo;
ต่อไปนี้เป็นผลลัพธ์
<ก่อนหน้า>+----------------+-------------------+------+--- ---+----------------------+----------------+| สนาม | พิมพ์ | Null | คีย์ | ค่าเริ่มต้น | พิเศษ |+----------------+--------------------------------+------+---- ------------------------+----------------+| รหัสผู้ใช้ | int(11) | ไม่ | PRI | NULL | auto_increment || ชื่อผู้ใช้ | varchar(20) | ใช่ | | NULL | || UserGameScores | int(10) ไม่ได้ลงนาม | ไม่ | | NULL | |+---------------------------------------------------------+---- +---------+----------------+3 แถวในชุด (0.00 วินาที)ตอนนี้ ถ้าคุณพยายามแทรกตัวเลขติดลบสำหรับคอลัมน์ UserGameScores แล้ว MySQL จะแจ้งข้อผิดพลาดเนื่องจากเราได้ตั้งค่าเป็น INT UNSIGNED ให้เราใส่ค่าบางค่ารวมทั้งจำนวนลบ
mysql> แทรกลงในค่า preventNegativeNumberDemo(UserName,UserGameScores) ('Larry',0);การสืบค้นตกลง ได้รับผลกระทบ 1 แถว (1.20 วินาที)mysql> แทรกลงในค่า preventNegativeNumberDemo (ชื่อผู้ใช้ UserGameScores) ('Mike',-1 );ข้อผิดพลาด 1264 (22003):ค่านอกช่วงสำหรับคอลัมน์ 'UserGameScores' ที่แถว 1mysql> แทรกลงในค่าป้องกันNegativeNumberDemo(ชื่อผู้ใช้, UserGameScores) ('Sam', -100);ข้อผิดพลาด 1264 (22003):ค่านอกช่วงสำหรับ คอลัมน์ 'UserGameScores' ที่แถว 1mysql> แทรกลงในค่า preventNegativeNumberDemo (ชื่อผู้ใช้ UserGameScores) ('John', 100) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.84 วินาที) mysql> แทรกลงในค่า preventNegativeNumberDemo (ชื่อผู้ใช้ UserGameScores) ค่า ('Bob' ,200);แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.48 วินาที)
ดูข้อผิดพลาดด้านบนเมื่อเราพยายามใส่ค่าลบ
ตอนนี้แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select เฉพาะตัวเลขบวกเท่านั้นที่จะแทรก
mysql> เลือก *จาก preventNegativeNumberDemo;
ต่อไปนี้เป็นผลลัพธ์
<ก่อนหน้า>+---------+----------+----------------+| รหัสผู้ใช้ | ชื่อผู้ใช้ | UserGameScores |+-------+----------+----------------+| 1 | แลร์รี่ | 0 || 2 | จอห์น | 100 || 3 | บ๊อบ | 200 |+-------+----------+----------------+3 แถวในชุด (0.00 วินาที)ก่อน>