And Brain said,

[Express, Mybatis, OracleDB] selectKey가 안 될 때 본문

IT/Node.js

[Express, Mybatis, OracleDB] selectKey가 안 될 때

The Man 2022. 9. 9. 23:53
반응형

 

글에 파일첨부 기능을 넣기위해 insert 문을 xml에 적어서 oracleDB와 express를 mybatis로 연동시켰는데

 

왜인지 Mybatis selectKey 문법이 express 환경에서 안 되서 insert를 할 때 selectKey를 안 쓰고 마지막 시퀀스 값

 

을 가져오는 법을 사용했다.

 

 

 

SEQ.NEXTVAL은 증가시키고 SEQ.CURRVAL은 현재 시퀀스 값을 가져온다는 것은 잘 알 것이다.

 

이 두  개만 있으면 얼핏 selectKey가 필요없어보이지만

 

selectKey를 쓰는 이유가 있지 않겠는가?

SEQ.CURRVAL은 같은 세션에 SEQ.NEXTVAL을 한 번 때려줘야만 가능한 녀석이다.

 

SEQ.CURRVAL만 따로 쓰거나 먼저 쓸  수 없다는 얘기다. 그래서 시퀀스의 최근 값을 가져오는데 가장 효율적인 것이 selectKey인 것이다.

 

하지만 이 selectKey가 안 된다면? 

 

그럴때 삽입문에 시퀀스의 최근 값을 가져오는 방법은

 

INSERT INTO 테이블명(COLUMN1,COLUMN2) 
	VALUES(#{COLUMN1},(SELECT LAST_NUMBER FROM USER_SEQUENCES WHERE SEQUENCE_NAME='시퀀스명(대문자)'))

 

*** LAST_NUMBER는 연산이 가능하다.  ex) SELECT (LAST_NUMBER - 1) FROM USER_SEQUENCES

 

 

Thanks for watching, Have a nice day.

 

 

 

반응형
Comments