MySQL 오류 1093 극복: "FROM 절에서 업데이트할 대상 테이블을 지정할 수 없습니다."
MySQL 오류 1093이 발생하는 경우 중요합니다. 근본적인 문제를 이해하는 것입니다. 이 오류는 쿼리의 FROM 절에서도 참조되는 테이블을 수정하려고 할 때 발생합니다.
근본 원인
MySQL에서는 테이블을 동시에 수정하는 것을 허용하지 않습니다. UPDATE 또는 DELETE 문의 FROM 절에 사용됩니다. 이러한 제한은 두 작업에 대해 동일한 테이블에 액세스할 때 발생할 수 있는 모호성 때문입니다.
해결책 1: 하위 쿼리 사용
한 가지 해결 방법은 SELECT를 포함하는 것입니다. UPDATE 또는 DELETE의 FROM 절에 있는 하위 쿼리로 손상된 항목을 식별하는 문 명령문:
UPDATE story_category SET category_id = NULL WHERE category_id NOT IN ( SELECT DISTINCT category.id FROM category INNER JOIN story_category ON category_id=category.id );
해결책 2: 테이블 자체 조인
또는 테이블을 자체 조인하여 동일한 테이블에 대해 별도의 별칭을 생성할 수 있습니다. 별칭 중 하나를 수정하면서 다른 별칭을 참조할 수 있습니다. 예:
UPDATE story_category AS updated INNER JOIN story_category AS original ON updated.category_id = original.category_id SET updated.category_id = NULL WHERE original.category_id NOT IN ( SELECT DISTINCT category.id FROM category INNER JOIN story_category ON category_id=category.id );
재발 방지
손상된 항목이 삭제되면 story_category 테이블에 제약 조건을 구현하여 향후 잘못된 항목을 방지하는 것이 좋습니다.
ALTER TABLE story_category ADD FOREIGN KEY (category_id) REFERENCES category(id);
위 내용은 MySQL 오류 1093: 'FROM 절에서 업데이트할 대상 테이블을 지정할 수 없습니다'를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!