쿼리문 짜는데 너무 안짜져서요 ㅠㅠ 0 0 634

by 케빈재브라위너 [SQL Query] 마농 [2021.02.03 16:54:08]


현재 가지고있는 테이블

TB_BOARD 라는 게시판테이블이 있고

PK는 어떤식으로 들어가냐면 ex) 202102030000 , 0001 , 0002 , 0003 

하루가 지나면 202102040000, 0001 , 0002 , 0003 이렇게 들어가게 해놨습니다

근데 날짜가 지나면 초기화가안되고 계속 무한대로 202102030009 까지 있다고 현재 치면

 다음날은 202102040010 이 되버리는겁니다....

일단 그거도 문제고 

그다음에 문제는

BOARD게시판에 insert를 할때 pk를 제가 직접 파라미터로 넣어주고있거든요

insert into board ( pk)

values( :pk)

이렇게 해서 pk 값을 넣어주는데 

하드코딩이아니라 컨트롤러에서 pk를 가져오는 쿼리를 수행한 이후에  그 pk값을 받아서 

그거를 insert하는 부분에다가 넣어주거든요

 

현재 쿼리입니다

/*com.sds.idps.qa.qaDAO.getQABoardPk*/
SELECT CONCAT(TO_CHAR(SYSDATE,'YYYYMMDD'),LPAD(QA_BOARD_SEQ.NEXTVAL,4,0))
 QA_NO
FROM DUAL

인터넷찾다보니까 lpad라는게 숫자 하나씩 올려주는거라고 하길래 했는데...

제 생각과는 다르게 일단 0000부터 무한대까지 계속 증가하고있어요 ㅠㅠ

제일 맨처음 테이블은 현재날짜에 + 0000 으로 시작하고

그다음부터는 매 날짜마다 초기화되서 저장이 되어야하는데 어떻게하면 짤수있을까요

 

인터넷 뒤지다보니까  애초에 PK를 제약설정?? 그런거를 해서 시퀀스를 걸수있다는데 

제가 굳이 pk를 insert안하고 나머지데이터만 insert해도 저절로 pk가 알아서 자동입력되게끔 할수도 있나요???

 

그리고 현재 저 위의 쿼리의 단점은 또 뭐가있냐면

제가 쿼리가 잘동작하는지 직접 불러와서 f9를 눌러서 실행을 하면 

qa_no가 계속 해서 지멋대로 게시글이 등록된거도아닌데 자연적으로 증가를 해버립니다..

 

f9 2번누르고 개시글등록하면 pk랑 게시글의 no 랑 2차이가 나네요 한번 꼬이면 망해버리네요...

 

처음엔 잘되는지알고 이상없이 다른기능 개발하고있었는데 갑자기 여기서 막혀버리니까 ㅠㅠ

 

제 생각은 FROM DUAL이 아니라 BOARD테이블이랑 조인해서 BOARD테이블의 가장마지막에 등록된 pk의 넘버를 받아와서 

그거 더하기 1해서 집어넣는 생각도 해봤는데 

쿼리로는 안짜지더라고요 계쏙 에러만 나고....

도와주시면 감사하겠습니다

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입