[MSSQL]Insert실행시 자동증가되는 IDENTITY값 바로 가져오기
insert를 실행시키고 자동으로 증가 되도록 해놓은 PK값이 바로 필요한 경우가 있다.
A테이블에 값이 입력되면 그 값에 종속되는 B테이블의 값을 넣어야 하는데
PK를 알아오기 위해서 insert후 다시 select 하더라도 한 컨트롤러에서 해결하기란 힘들다.
게다가 해당 pk값을 모르기 때문에 다시 select 하는 것도 문제.
해결 방법
1 2 | SELECT @@IDENTITY | cs |
이걸 사용 하는 것 이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | INSERT INTO T_AUTH ( VAL1 ,VAL2 ,VAL3) values( #{VAL1} ,#{VAL2} ,#{VAL3}) SELECT @@IDENTITY AS SEQ | cs |
이런식으로 사용 하면
SEQ라는 컬럼에 자동증가된 값을 반환 한다
참고로 MYBAITIS에서는
INSERT가 아니라 SELECT로 감싸줘야 정상 작동 한다
예를 들어
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <select id="insertAuth" parameterType="VO" resultType="VO"> INSERT INTO T_AUTH ( VAL1 ,VAL2 ,VAL3) values( #{VAL1} ,#{VAL2} ,#{VAL3}) SELECT @@IDENTITY AS SEQ </select> | cs |
이런식으로 만들면 VO SEQ에 해당 값이 담겨서 리턴 된다.
'Yame Programmer > SQL' 카테고리의 다른 글
[MSSQL] 로우 합치기 STUFF, FOR XML PATH, mysql group_concat 기능 (0) | 2020.03.12 |
---|---|
[MSSQL] 프로시저 트리거 while 반복문 사용 방법, 변수를 컬럼명으로 사용 하는 방법 (0) | 2017.05.17 |
[Oracle MyBatis] 오라클 마이바티스에서 다중 insert 하는 방법(insert all) (0) | 2017.01.16 |
[Mybatis] getter for property named 에러 해결방법 (3) | 2017.01.11 |
[MyBatis] Oracle 부적합한 열유형 null 처리 방법 jdbcType=VARCHAR 안쓰기 (2) | 2017.01.11 |