[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