Databases/MYSQL
mysql - 서브 쿼리 사용시 주의
네박자심쿵
2011. 8. 24. 17:03
Error 1093 (ER_UPDATE_TABLE_USED)
SQLSTATE = HY000
Message = "You can't specify target table 'x'
for update in FROM clause"
이 에러는 다음과 같은 경우에 발생 한다.
UPDATE t1 SET column2 = (SELECT MAX(column1) FROM t1);
여러분은 UPDATE문 내에서 할당을 위한 서브쿼리를 사용할 수 있는데 그 서브쿼리들은 SELECT문 뿐만 아니라 UPDATE와 DELETE문들 내에서 적합하기 때문이다. 그러나 서브쿼리의 FROM절과 업데이트 target모두를 위해 같은 테이블을 사용할 수 없다.
정리 : 동일한 테이블을 update하고 select하는건 위반이다!! 스토어드 프로시저를 이용해야 할것 같다.