자바빵
578
2021-04-29 17:12:50
4
179

insert 한 값의 pk를 얻고 싶습니다.


Springboot에서

JDBC template를 통해서 

Mysql을 사용중입니다.


예를 들어서 상품을 등록하는데,

상품을 등록하고, 해당 상품에 대한 옵션값을 넣어야하는 상황입니다.


상품테이블

nametype
productNo(PK)int
productNameString
productStatusint


옵션테이블

nametype
optionNo(PK)int
productNo(FK)int
optionNameString



테이블이 대충 이런식이라

옵션테이블은 상품테이블의 productNo(PK)와 연결되어있습니다.


상품을 입력할때,

상품정보옵션을 모두 입력받기 때문에

서버에서 상품정보를 입력하고 그때 나온 productNo(PK)를 얻어서 옵션을 입력하고 싶습니다.



단순한 생각으로는 상품테이블의 마지막 입력값의 productNo(PK)를 가져와서 사용하면될꺼 같기도 하지만,

문제의 여지가 있어보여서 질문드려봅니다!!!

감사합니다 ㅎㅎ

0
  • 답변 4

  • 로를리앙
    408
    2021-04-29 17:21:52

    mybatis 를 쓰고있다면, selectKey를 이용해서 인서트후 인서트된 키값을 가져올수 있구요, 


    아니면 인서트전에 pk값을 구해서 사용하는 방법도 있구요 .. 

  • 자바빵
    578
    2021-04-29 17:41:10

    @로를리앙

    앗 이 내용을 안적었네요...
    구글링 해보니, 죄다 마이바티스 내용이라 올린 질문입니다 ㅎㅎ


    관련 로직은 상당히 많이 쓰일꺼 같아서
    마이바티스 아니라도 분명히 selectKey와 비슷한 기능이 있을꺼 같고,
    Mysql에서도 지원할꺼 같은데 도통 안나와서 답답하네요 ㅠㅠ

  • zkzwzd
    908
    2021-04-30 14:18:51

    pk를 설정 하셨으면 자동으로 생성되는거 아닌가요?

    insert하고나서 productNo가 생성이 안된다는건가요?

  • 로를리앙
    408
    2021-04-30 16:08:15

    @자바빵


    마이바티스가 아니라면, 

    우선 key값을 service에서 미리 생성해서 key에다 넣는다던가

    아니라면 쿼리에서 key를 select 해서 insert하는 방법이 있겟죠. 

    제가 jpa는 잘몰라서 관련된것은 잘 모르겟지만..

    insert -> pk select -> insert2 이런단계라면 분명 서비스 단계에서 트랜잭션이 걸려잇을테니, 

    아마 insert될 pk를 select해서 insert에 사용하는 방법이 적당하다고 보여집니다 ㅠㅠ

  • 로그인을 하시면 답변을 등록할 수 있습니다.