sitelink1 | https://blog.leocat.kr/notes/2017/07/22/...ter-insert |
---|---|
sitelink2 | https://www.omnibuscode.com/board/index...._srl=57625 |
extra_vars5 | |
extra_vars6 |
함수의 이해는 sitelink1 를 참고하면 된다.
연관하여 다음 seq 를 조회하고자 할땐 sitelink2 문서를 참고하면 된다.
프로그램에서 SELECT LAST_INSERT_ID() 함수 쿼리를 이용할시 유의할 점은 동일한 connection 으로만 사용해야 한다는 것이다.
가령 insert 를 위해 transaction connection 을 open 하여 insert 수행후에
동일한 connection 에 대해 SELECT LAST_INSERT_ID() 를 실행하면 방금 삽입한 row 의 index 값을 취할 수 있게 되는 것이다.
하지만 해당 connection 을 close 하고 새로운 connection 을 open 하여 SELECT LAST_INSERT_ID() 함수를 실행하게 되면 무조건 0 을 반환하게 된다.
java의 예시는 다음과 같다.
public int add(String serialNum, String dateTime, String seqMall, String seqUser) throws Exception {
int seqOrder = -1;
StringBuffer querySb = new StringBuffer();
querySb.append("INSERT INTO jbg_order (");
querySb.append("serial_num,");
querySb.append("date_time,");
querySb.append("seq_jbgmall,");
querySb.append("seq_user");
querySb.append(") values (");
querySb.append("'"+serialNum + "'");
querySb.append(", "+ dateTime);
querySb.append(", "+ seqMall);
querySb.append(", "+ seqUser);
querySb.append(")");
log.debug("LOCALDB-QUERY------------------------------------------------------------------------------");
log.debug(querySb);
LocalDBConnection conn = null;
try {
conn = new LocalDBConnection();
conn.txOpen();
conn.txExecuteUpdate(querySb.toString());
String getLastIdQuery = "SELECT LAST_INSERT_ID() id";
ResultSet rset = conn.executeQuery(getLastIdQuery);
if (rset != null) {
if (rset.next()) {
seqOrder = rset.getInt("id");
}
}
conn.txCommit();
} catch (SQLException sqle) {
log.error("* 아이고!! ㅜ.ㅜ 데이터베이스 업데이트 에러 발생");
log.error(sqle.getMessage());
log.debug(ExceptionUtil.getStackTraceString(sqle.getStackTrace()));
sqle.printStackTrace();
throw sqle;
} catch (Exception e) {
log.error("* 데이터베이스 업데이트 에러 발생");
log.error(e.getMessage());
log.debug(ExceptionUtil.getStackTraceString(e.getStackTrace()));
e.printStackTrace();
conn.txRollBack();
throw e;
} finally {
conn.close();
}
return seqOrder;
}
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
» | 마지막 insert 한 row 의 seq를 취하는 함수 SELECT LAST_INSERT_ID() | 황제낙엽 | 2024.06.05 | 165 |
6 | HeidiSQL 에서 사용자 관리 | 황제낙엽 | 2023.06.23 | 111 |
5 | DATETIME 컬럼에 날짜 입력 예제 (java코드) | 황제낙엽 | 2019.05.29 | 475 |
4 |
우분투, MariaDB, phpmyadmin 설치하기
![]() | 황제낙엽 | 2017.01.31 | 401 |
3 |
MSI로 설치
![]() | 황제낙엽 | 2017.01.26 | 179 |
2 |
ZIP으로 설치
![]() | 황제낙엽 | 2017.01.26 | 185 |
1 |
세상에 공짜는 없다(MySQL 의 대안)
![]() | 황제낙엽 | 2016.05.24 | 239 |