Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Chèn giá trị âm vào cột UNSIGNED trong MySQL gây lỗi

Tóm tắt

Cột UNSIGNED chỉ chấp nhận số không âm (0 và dương). Chèn giá trị âm → lỗi ERROR 1264 (22003): Out of range value.

Ví dụ

1. Tạo bảng cột UNSIGNED

CREATE TABLE UnsignedDemo (Id INT UNSIGNED);

2. Chèn giá trị âm – LỖI

INSERT INTO UnsignedDemo VALUES (-100);
-- ERROR 1264 (22003): Out of range value for column 'Id' at row 1

3. Chèn giá trị dương/hằng số 0 – OK

INSERT INTO UnsignedDemo VALUES (100), (1000), (0), (100000000);
SELECT * FROM UnsignedDemo;
+-----------+
| Id        |
+-----------+
| 100       |
| 1000      |
| 0         |
| 100000000 |
+-----------+

Phạm vi các kiểu UNSIGNED

KiểuPhạm vi
TINYINT UNSIGNED0 ~ 255
SMALLINT UNSIGNED0 ~ 65,535
MEDIUMINT UNSIGNED0 ~ 16,777,215
INT UNSIGNED0 ~ 4,294,967,295
BIGINT UNSIGNED0 ~ 18,446,744,073,709,551,615

Ứng dụng

  • Khóa chính, khóa ngoại (ID, count, quantity).
  • Tăng phạm vi dương gấp đôi so với signed cùng kích thước.
  • Kết hợp NOT NULL để đảm bảo tính toàn vẹn.

Lưu ý

  • Phép tính giữa signed và unsigned có thể gây kết quả bất ngờ – hãy CAST rõ ràng.
  • AUTO_INCREMENT ngầm hiểu là UNSIGNED.