쿼리문 질문 드립니다.
- 작성자 :
- 장*익
- 작성일 :
- 2015-03-26 10:27:16
- 조회수 :
- 831
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
<insert id="tokenDAO.insertToken_sql">
<![CDATA[
INSERT INTO TOKENINFO
(
TOKEN_CODE_A
)
VALUES
(
select ifnull(max(token_code_a), 0) + 1 from tokeninfo
)
]]>
</insert>
------------------------------------------------------------------------------------------------------------------------------------------------------
mysql + ibatis / token_code_a 컬럼 int형
------------------------------------------------------------------------------------------------------------------------------------------------------
위와 같이 token_code_a라는 데이터베이스 컬럼의 최대값을 가져와서 +1씩 증가 시켜줄려고 하는데요,
저 쿼리 구문이 mysql workbench상에서는 실행이 잘되는데, 위와같이 이클립스상에서 돌리면 syntax 에러라고 뜨는데
아무리 찾아봐도 뭐가 잘못된거지 모르겠어서 질문드립니다.
(mysql Auto Incremental기능은 다른 컬럼에 적용되서 중복적용은 안되더라구요.)
------------------------------------------------------------------------------------------------------------------------------------------------------
에러 내용은 글자수가 모자라서 파일 첨부해드립니다.
에러부분 옆쪽 짤린부분
(check the manual that corresponds to your MySQL server version for the right syntax to use near 'select ifnull(max(token_code_a), 0) + 1 from tokeninfo , nu' at line 1)
감사합니다.
<![CDATA[
INSERT INTO TOKENINFO
(
TOKEN_CODE_A
)
VALUES
(
select ifnull(max(token_code_a), 0) + 1 from tokeninfo
)
]]>
</insert>
------------------------------------------------------------------------------------------------------------------------------------------------------
mysql + ibatis / token_code_a 컬럼 int형
------------------------------------------------------------------------------------------------------------------------------------------------------
위와 같이 token_code_a라는 데이터베이스 컬럼의 최대값을 가져와서 +1씩 증가 시켜줄려고 하는데요,
저 쿼리 구문이 mysql workbench상에서는 실행이 잘되는데, 위와같이 이클립스상에서 돌리면 syntax 에러라고 뜨는데
아무리 찾아봐도 뭐가 잘못된거지 모르겠어서 질문드립니다.
(mysql Auto Incremental기능은 다른 컬럼에 적용되서 중복적용은 안되더라구요.)
------------------------------------------------------------------------------------------------------------------------------------------------------
에러 내용은 글자수가 모자라서 파일 첨부해드립니다.
에러부분 옆쪽 짤린부분
(check the manual that corresponds to your MySQL server version for the right syntax to use near 'select ifnull(max(token_code_a), 0) + 1 from tokeninfo , nu' at line 1)
감사합니다.
A
안녕하세요. 표준프레임워크센터 입니다.
질문하신 내용에 관해 관련자료를 찾아보니, Mysql 5.6부터 정책이 변경되어 하나의 쿼리에서
select 에 사용된 '동일한 테이블'을 insert하거나 update, delete 할 수 없는 것으로 변경된 것 같습니다.
해당링크
http://dev.mysql.com/doc/refman/5.6/en/update.html
http://www.mysqlkorea.com/sub.html?mcode=manual&scode=01&m_no=21533&cat1=13&cat2=380&cat3=402&lang=k
※ Error 1093 (ER_UPDATE_TABLE_USED) 내용
따라서 먼저 mysql버젼을 확인해보시고, 5.6이상이시면 from 절 안에서 서로 비교하거나 join 을 이용하는 방법으로 변경하셔서
적용해보시길 권장드립니다.
참조링크
http://hosang.tistory.com/entry/You-cant-specify-target-table-for-update-in-FROM-clause
http://knight76.tistory.com/entry/My-sql-에서-sub-query가-안되는-현상
감사합니다.
질문하신 내용에 관해 관련자료를 찾아보니, Mysql 5.6부터 정책이 변경되어 하나의 쿼리에서
select 에 사용된 '동일한 테이블'을 insert하거나 update, delete 할 수 없는 것으로 변경된 것 같습니다.
해당링크
http://dev.mysql.com/doc/refman/5.6/en/update.html
http://www.mysqlkorea.com/sub.html?mcode=manual&scode=01&m_no=21533&cat1=13&cat2=380&cat3=402&lang=k
※ Error 1093 (ER_UPDATE_TABLE_USED) 내용
따라서 먼저 mysql버젼을 확인해보시고, 5.6이상이시면 from 절 안에서 서로 비교하거나 join 을 이용하는 방법으로 변경하셔서
적용해보시길 권장드립니다.
참조링크
http://hosang.tistory.com/entry/You-cant-specify-target-table-for-update-in-FROM-clause
http://knight76.tistory.com/entry/My-sql-에서-sub-query가-안되는-현상
감사합니다.