Computer >> Máy Tính >  >> Lập trình >> MySQL

Ngăn chặn số âm trong MySQL?

Để ngăn số âm trong MySQL, bạn cần sử dụng INT UNSIGNED. Giả sử bạn đã tạo một bảng với một cột là int, tức là UserGameScores tại đây

 mysql> create table PreventNegativeNumberDemo -> (-> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> UserName varchar (20), -> UserGameScores int ->); Truy vấn OK, 0 hàng bị ảnh hưởng (1,74 giây) 

Bây giờ nếu bạn cần ngăn các số âm trong đó, hãy sửa đổi cùng một cột với INT UNSIGNED

 mysql> thay đổi bảng ngănNegativeNumberDemo sửa đổi cột UserGameScores INT UNSIGNED NOT NULL; Truy vấn OK, 0 hàng bị ảnh hưởng (3,32 giây) Bản ghi:0 Bản sao:0 Cảnh báo:0 

Bây giờ hãy kiểm tra mô tả bảng một lần nữa.

Truy vấn như sau

 mysql> desc PreventNegativeNumberDemo; 

Sau đây là kết quả

 + ---------------- + ------------------ + ------ + --- - + --------- + ---------------- + | Lĩnh vực | Loại | Không có | Chìa khóa | Mặc định | Thêm | + ---------------- + ------------------ + ------ + ---- - + --------- + ---------------- + | UserId | int (11) | KHÔNG | PRI | NULL | auto_increment || Tên người dùng | varchar (20) | CÓ | | NULL | || UserGameScores | int (10) không dấu | KHÔNG | | NULL | | + ---------------- + ------------------ + ------ + ----- + --------- + ---------------- + 3 hàng trong bộ (0,00 giây) 

Bây giờ nếu bạn cố gắng chèn số âm cho cột UserGameScores thì MySQL sẽ báo lỗi vì chúng tôi đã đặt nó là INT UNSIGNED. Hãy để chúng tôi chèn một số giá trị bao gồm số âm

 mysql> chèn vào giá trị PreventNegativeNumberDemo (UserName, UserGameScores) ('Larry', 0); Truy vấn OK, 1 hàng bị ảnh hưởng (1,20 giây) mysql> chèn vào giá trị PreventNegativeNumberDemo (UserName, UserGameScores) ('Mike', - 1 ); LỖI 1264 (22003):Giá trị ngoài phạm vi cho cột 'UserGameScores' tại hàng 1mysql> chèn vào giá trị PreventNegativeNumberDemo (Tên người dùng, Tên người dùng) ('Sam', - 100); LỖI 1264 (22003):Giá trị ngoài phạm vi cho cột 'UserGameScores' tại hàng 1mysql> chèn vào các giá trị PreventNegativeNumberDemo (UserName, UserGameScores) ('John', 100); Truy vấn OK, 1 hàng bị ảnh hưởng (0,84 giây) mysql> chèn vào giá trị PreventNegativeNumberDemo (UserName, UserGameScores) ('Bob' , 200); Truy vấn OK, 1 hàng bị ảnh hưởng (0,48 giây) 

Hãy xem lỗi ở trên khi chúng tôi cố gắng chèn giá trị âm.

Bây giờ hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Chỉ những số dương mới được chèn vào

 mysql> select * from PreventNegativeNumberDemo; 

Sau đây là kết quả

 + -------- + ---------- + ---------------- + | UserId | Tên người dùng | UserGameScores | + -------- + ---------- + ---------------- + | 1 | Larry | 0 || 2 | John | 100 || 3 | Bob | 200 | + -------- + ---------- + ---------------- + 3 hàng trong bộ (0,00 giây)