CREATE TEMPORARY TABLE TMP(IDX INTEGER UNSIGNED);
INSERT TMP VALUE(1);
UPDATE TMP SET IDX=IDX-2;
SELECT * FROM TMP;
이렇게 했을시 최종 값으로 4294967294 값이 나오는데.... 너무 당연 한건 지도.
UNSIGNED의 의미가 0보다 큰값을 가질수 없다라는 의미로 이해했었는데
다시 보느 말그대로 +/- 비트를 안쓴 다는 거더군요.
질문의 요지는 2-1 을 했을 시 계산된 값이 0보다 잘을시 0 값으로 해주고 싶은데.
CHECK 같은 제약 같은게 없나요?
다음과 같이 하면 되긴 하는데.
UPDATE TMP SET IDX=1;
UPDATE TMP SET IDX=IF(IDX-2<0, 0, IDX-2);
응용 프로그램 단에 박혀 있는거라 지금 현재 수정이 불가 합니다.
DB단에서 체크할수 있는 방법 이 없을까요.
|