현재 가지고있는 테이블
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해서 집어넣는 생각도 해봤는데
쿼리로는 안짜지더라고요 계쏙 에러만 나고....
도와주시면 감사하겠습니다