MS SQL에서 지원되지 않는 부호없는 정수 필드 유형을 해결하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/29694

문제

MySQL 기반 애플리케이션이 MS SQL을 지원하도록 만들려고 시도하다가 다음과 같은 문제가 발생했습니다.

음수 값이 절대로 없다는 것을 알고 있으므로 전체 범위를 사용하기 위해 MySQL의 auto_increment를 부호없는 정수 필드 (다양한 크기)로 유지합니다. MS SQL은 모든 정수 유형에서 unsigned 속성을 지원하지 않으므로 값 범위의 절반을 버리거나 몇 가지 해결 방법을 만들어야합니다.

한 가지 매우 순진한 접근 방식은 데이터베이스 추상화 코드 또는 db 측의 음수 값과 부호없는 범위의 더 큰 부분의 값 사이를 변환하는 저장 프로 시저에 일부 코드를 넣는 것입니다. 이것은 물론 정렬을 엉망으로 만들며 자동 ID 기능과 함께 작동하지 않습니다 (또는 어떤 식 으로든 작동합니까?).

지금은 좋은 해결 방법을 생각할 수 없습니다. 다른 방법이 있습니까? 아니면 내가 광신자라서 범위의 절반을 잊어야하나요?

편집 :
@ Mike Woodhouse : 네, 맞아요. 활용도를 최적화하면 필드 크기를 줄일 수 있다는 목소리가 여전히 머릿속에 있습니다. 하지만 쉬운 방법이 없다면 걱정할 필요가 없을 것입니다.

도움이 되었습니까?

해결책

문제가 실제 문제가 될 가능성은 언제입니까?

현재 증가율을 고려할 때 MS SQL 버전에서 부호있는 정수 오버플로가 얼마나 빨리 발생할 것으로 예상하십니까?

비관적입니다.

애플리케이션이 얼마나 오래 지속될 것으로 예상하십니까?

그래도 2 차의 요인이 걱정해야한다고 생각하십니까?

(정답이 무엇인지는 모르겠지만 해결책을 찾기 전에 문제가 있는지 확인해야한다고 생각합니다.)

다른 팁

9,223,372,036,854,775,807까지 올라가는 BIGINT 데이터 유형을 사용하는 것이 좋습니다.

SQL Server는 부호있는 값과 부호없는 값을 지원하지 않습니다.

나는 이렇게 말할 것입니다 .. "우리는 일반적으로 구성 요소 간의 차이점을 어떻게 처리합니까?"

다양한 내용 요약 ..

데이터 액세스 계층 내에 추상화 계층을 생성하여 데이터베이스가 MySQL인지 MS SQL인지 여부에 관심이없는 지점으로 이동해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top