You can't specify target table '테이블명' for update in FROM clause 에러가 발생할 경우 처리방법


MariaDB에서 insert, update, delete에서 서브쿼리로 동일한 테이블의 조건을 사용시 발생하는 에러입니다.


오라클을 사용하던 사용자는 쿼리에 에러가 있는 것도 아닌데 왜 에러가 발생하는지 알방법이 없습니다.


1. 에러가 발생하는 쿼리 예


INSERT INTO board ( seq, name )

VALUES ( (SELECT MAX(seq) FROM board), name);


빨강색으로 표시된 부분을 보면 insert 하려는 테이블과 서브쿼리의 테이블이 동일한 것을 확인 할 수 있다.


2. 해결방법


서브쿼리 내부의 테이블에 별칭을 주면 됩니다.


INSERT INTO board ( seq, name )

VALUES ( (SELECT MAX(seq) FROM board a), name);



http://supremedev.com/21