저장할 때 이제까지 426088025. 데이터베이스 세계에서는 시퀀스를 사용하고 싶지만 5 자 제한 때문에이 수가 넘지 않도록해야합니다 (잘하면 426M 미만의 레코드를 저장하는 것이 좋습니다). 데이터베이스가 다를 수 있습니다 - PostgreSQL의 구문입니다
create sequence your_sequence maxvalue 426088025 no cycle
:
당신이 뭔가를 할 수 있습니다 시퀀스를 만듭니다.
그런 다음 코드에서 당신은 당신의 가치를 얻을 수있는
select nextval('your_sequence')
을 할 수있는 다음 Base64로이 값을 인코딩합니다. PostgreSQL에서 "no cycle"은 최대 값에 도달하면 오류가 발생 함을 의미합니다.
자바 8에서, Base64로가 포함되어 있습니다 :
import java.util.Base64;
...
String userNumber = Base64.getEncoder().encodeToString(Integer.toString(integerFromSequenceSelect));
그렇지 않으면 당신은 자바의 이전 버전과 붙어 있다면, Apache Commons Codec를 사용하고 실행도 알고 싶어
import org.apache.commons.codec.binary.Base64;
...
String userNumber = Base64.encodeBase64String(Integer.toString(integerFromSequenceSelect));
하나로서 어떤 숫자가 해결 되었습니까? –
여러 명의 사용자가 동시에 요청할 경우에도 동일한 문제가 발생하지 않습니까? 마찬가지로, 테이블에 더 높은 증가 시퀀스를 처리하고 저장하기 전에 2 명 이상의 사용자가 요청에 도달하면 어떻게됩니까? – RedA
@JoopEggen이 솔루션으로 위의 문제를 피하는 방법에 대해 좀 더 자세히 설명해 주시겠습니까? 여러 사용자가 동시에 요청할 때? 미리 대단히 감사하겠습니다. – RedA