✔ ERROR 1093 (HY000): You can't specify target table 'BOARD' for update in FROM clause
- MySQL에서 자기 테이블의 데이터를 바로 사용하지 못하여 생기는 오류
INSERT INTO BOARD VALUES((SELECT IFNULL(MAX(NUM),100)+1 FROM BOARD),?,?)
🚨 Error 발생 원인
- MySQL은 Oracle과 달리 UPDATE , INSERT, DELETE 시 서브쿼리의 FROM 테이블과 업데이트 타겟이 되는 테이블을 같이 사용할 수 없음
- 여기서 INSERT 하는 타겟 테이블과 서브쿼리의 테이블이 BOARD로 동일하기때문에 에러가 발생하였다.
🔍 Error 해결방법
INSERT INTO BOARD VALUES(
(SELECT NUM FROM (
SELECT IFNULL(MAX(NUM),100)+1 AS NUM FROM BOARD) T_BOARD )
,'test','test');
- 서브쿼리의 결과를 임시 테이블로 만든 후 실행하면 해결할 수 있음