[MySQL||MariaDB] 1093 Error 발생시

    MySQL, MariaDB 1093 Error 발생

     

     

      Error 명

     SQL 오류 (1093): Table '테이블 명' is specified twice, both as a target for 'INSERT' and as a separate source for date

     

    INSERT 할 시, 이와 같은 에러가 발생했다.

      원인

    1093 Error가 발생하면서 Insert가 동작되지 않는다.

    INSERT INTO T_USR_AREA (AREA_SEQ, AG_01, AG_02, INST_DATE, UPDT_DATE, UPDT_ADMIN)
    VALUES ((SELECT IFNULL(MAX(AREA_SEQ)+1, 0) FROM t_usr_area), 'Y', 'Y', CURDATE(), CURDATE(), 'user');

    원인은 INSERT 안의 서브 쿼리를 주입함으로써 INSERT가 서브 쿼리를 인식하지 못하는 경우이다.

    이로 인해 INSERT가 제대로 작동되지 않고 ERROR코드 1093을 출력하게 된다.

     

     

      해결 방법

    ALIAS_FOR_SUBQUERY만 추가했을 뿐인데, 동작이 되는 것을 확인 할 수 있다.

    INSERT INTO T_USR_AREA (AREA_SEQ, AG_01, AG_02, INST_DATE, UPDT_DATE, UPDT_ADMIN)
    VALUES ((SELECT IFNULL(MAX(AREA_SEQ)+1, 0) FROM t_usr_area ALIAS_FOR_SUBQUERY),
    'Y', 'Y', CURDATE(), CURDATE(), 'user');

    INSERT 안의 서브 쿼리 FROM 테이블 명 뒤에 ALIAS_FOR_SUBQUERY를 명시해준다.

    필자는 WHERE 절을 안 썼기 때문에 이대로 내버려 두게 되었지만 WHERE절이 필요할 경우, SUBQUERY 뒤에 이어 사용하면 된다.

     

     

      마무리

    INSERT 결과 확인

     마지막으로 SELECT문을 통해 조회 결과, 제대로 INSERT 된 것을 확인할 수 있다.

    반응형

    댓글

    Designed by JB FACTORY