2012-03-04 2 views
2

클라이언트의 서버를 기반으로 데이터베이스를 쿼리하는 학교 프로젝트에 많은 시간을 할애하고 있습니다. 요구 사항 중 하나는 데이터베이스에서 다음 사용 가능한 AutoNumber을 검색하는 것입니다.다음 사용 가능 번호 일련 번호 검색

다음 SQL 쿼리를 검색하려면 무엇이 가능합니까? Autonumber? 이것을 할 수 있습니까?

답변

1

사용하여 아래의 쿼리를 실행합니다. MariaDB (MySQL)에는 AUTO_INCREMENT 필드의 마지막 값을 제공하는 LAST_INSERT_ID() 함수가 있습니다. 시퀀스 (앵그르 말)를 지원

데이터베이스는 같은과 다음 값을 얻을 수 있습니다 :

SELECT NEXT VALUE FOR some_sequence; 

또는

SELECT some_sequence.NEXTVAL; 
+0

감사합니다. 그러나 나는 MSAccess의 데이터베이스를 언급하는 것을 잊었습니다. 비슷한 쿼리가 계속 작동합니까? – Arianule

+0

나는 M $ Access를 한번도 사용하지 않았지만 다음과 같은 것을 발견했다 :'IDENT_CURRENT ('table_name')'-이 함수는 분명히 테이블에 마지막으로 삽입 된 레코드의 마지막 ID를 제공한다 ... – DejanLekic

1

는 오라클의 경우, 그것은 RDBMS의 맛에 따라 JDBC

SELECT YOUR_SEQUENCE.NEXTVAL FROM DUAL 
2

다음 일련 번호 것은 마지막 일련 번호 1과 동일하지 않습니다 . 레코드가 삭제 된 경우 다음 번 가능한 자동 번호가 마지막 번호보다 상당히 클 수 있습니다. MS Access에서 부정적인 자율 취재를받는 것도 가능합니다. Allen Browne이 표시되면 ADOX를 사용하여 다음 자동 번호 인 autonumber 열의 seed 속성을 가져올 수 있습니다.

1

최상의 솔루션은 레코드를 삽입 한 다음 생성 된 키를 가져온 다음 트랜잭션을 롤백하는 것입니다. 트랜잭션 및 자동 번호 지원이있는 모든 데이터베이스에서 작동합니다.

+0

문제는 가 다중 사용자 환경에있는 경우 다른 사람이이 작업을 수행 할 때와 실제로 레코드를 삽입 할 때 사이에 레코드를 삽입하지 않을 것이라는 보장은 없습니다. – ChrisPadgham

+0

아무런 문제가 없습니다. 고유 한 번호를 원하면 얻을 수 있습니다. –

+0

문제가 있습니다. 트랜잭션을 롤백합니다. 귀하의 전화 번호는 이제 다른 사람의 재산입니다. 나는 다음 번 자판 번호를 얻는 것의 가치를 실제로 볼 수 없다. 왜냐하면 당신이 그것을 얻는 방법에 관계없이, 필요할 때가되면 사라질 수 있기 때문이다. – Fionnuala