레코드를 저장하는 데이터베이스 테이블 A가 있습니다. A는 auto_increment가있는 기본 키 (recordid)가 있습니다. A에 레코드를 삽입 할 때마다 삽입 된 레코드 ID를 얻고 다른 masterTable에 저장합니다. 나는 즉시 SELECT 문을 사용하고Java에서 데이터베이스 테이블의 마지막으로 삽입 된 레코드 ID 가져 오기?
내가이 같은 recordId를 얻을 수있는에 삽입을 수행
recordId를 DESC의 LIMIT 1에 의한 순서와선택의 recordId;
는하지만 난 두 개의 레코드에 같은 시간에 (다른 스레드에 의해) 삽입 된 문제가 오늘로 달리고 난 마스터 ID를 잘못 recordId를합니다 (txns 모두 동일 recordId를)
를 저장 결국Statement.getGeneratedKeys()에 대해 들었습니다. 문제 해결에 도움이되는지 알고 싶습니다. 또는 이것을 처리하는 가장 좋은 방법은 무엇입니까?
MySQL JDBC 드라이버가 구현하는 경우. –
사실입니다. JDBC 드라이버가 지원하지 않으면 ID를 가져 오기 위해 데이터베이스 고유의 메소드에 의존해야합니다. – kgiannakakis
@kgiannakakis -'session.save (myTable)'은'int'를 반환하지 않습니다. 다만, java.io.serializable를 돌려 주어, getGeneratedKeys() 메소드는 지금까지 JDBC 드라이버의 구현에서는 지원되어 있지 않습니다. 따라서 언급 한 두 가지 사례 중 어느 것도 명백한 것으로는 성공적이지 않습니다. 그들은 정말로 일하니? – Lion