MySQL에서 음수를 방지하려면 INT UNSIGNED를 사용해야 합니다. 열이 int인 테이블을 생성했다고 가정해 보겠습니다. 즉, 여기에 UserGameScores
mysql> create table preventNegativeNumberDemo -> ( -> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> UserName varchar(20), -> UserGameScores int -> );쿼리 OK, 영향을 받는 행 0개(1.74초)
이제 음수를 방지해야 하는 경우 INT UNSIGNED
로 동일한 열을 수정하십시오.mysql> alter table preventNegativeNumberDemo 수정 열 UserGameScores INT UNSIGNED NOT NULL;Query OK, 영향을 받는 행 0개(3.32초) 레코드:0 중복:0 경고:0
이제 다시 한번 테이블 설명을 확인하세요.
쿼리는 다음과 같습니다.
mysql> desc preventNegativeNumberDemo;
다음은 출력입니다.
+----------------+------------------+------+--- --+---------+----------------+| 필드 | 유형 | 널 | 키 | 기본값 | 추가 |+----------------+------------------+------+---- -----------+----------------+| 사용자 ID | 정수(11) | 아니오 | PRI | 널 | 자동 증가 || 사용자 이름 | varchar(20) | 예 | | 널 | || 사용자 게임 점수 | int(10) 부호 없는 | 아니오 | | 널 | |+----------------+------------------+------+----- +---------+----------------+3행 세트(0.00초)
이제 UserGameScores 열에 음수를 삽입하려고 하면 INT UNSIGNED로 설정했기 때문에 MySQL에서 오류가 발생합니다. 음수를 포함한 일부 값을 삽입해 보겠습니다.
mysql> insert into preventNegativeNumberDemo(UserName,UserGameScores) values('Larry',0);Query OK, 영향을 받는 행 1개(1.20초)mysql> preventNegativeNumberDemo(UserName,UserGameScores) values('Mike',-1에 삽입) );오류 1264(22003):1mysql 행의 'UserGameScores' 열에 대한 값 범위를 벗어남> preventNegativeNumberDemo(UserName,UserGameScores) values('Sam',-100)에 삽입합니다. 열 1mysql의 'UserGameScores'> preventNegativeNumberDemo(UserName,UserGameScores) 값('John',100)에 삽입, 쿼리 확인, 영향을 받는 1개 행(0.84초)mysql> preventNegativeNumberDemo(UserName,UserGameScores) 값('Bob'에 삽입) ,200);쿼리 OK, 영향을 받는 행 1개(0.48초)
음수 값을 삽입하려고 할 때 위의 오류를 보십시오.
이제 select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 양수만 삽입됩니다.
mysql> 선택 *from preventNegativeNumberDemo;
다음은 출력입니다.
+--------+----------+----------------+| 사용자 ID | 사용자 이름 | 사용자 게임 점수 |+--------+----------+----------------+| 1 | 래리 | 0 || 2 | 존 | 100 || 3 | 밥 | 200 |+--------+----------+----------------+3행 세트(0.00초)사전>