MySQL에서 특정 클라이언트와 관련된 게시물 삭제
문제:
저희 데이터베이스에는 clients
, projects
, posts
의 세 가지 테이블이 있습니다. 목표는 특정 클라이언트에 연결된 모든 게시물을 제거하는 것입니다. 다음 SQL 문은 유효하지 않습니다:
<code class="language-sql">DELETE FROM posts INNER JOIN projects ON projects.project_id = posts.project_id WHERE projects.client_id = :client_id;</code>
posts
테이블에는 직접 client_id
외래 키가 없습니다. project_id
외래 키
해결책:
특정 클라이언트에 속한 프로젝트에 연결된 게시물을 제거하려면 DELETE
문이 posts
테이블을 명시적으로 대상으로 지정해야 합니다. 수정된 쿼리는 다음과 같습니다.
<code class="language-sql">DELETE posts FROM posts INNER JOIN projects ON projects.project_id = posts.project_id WHERE projects.client_id = :client_id;</code>
대체 솔루션:
더 효율적인 방법은 ON DELETE CASCADE
및 projects
테이블 간의 외래 키 관계를 설정할 때 posts
제약 조건을 구현하는 것입니다. 관련 프로젝트가 삭제되면 게시물도 자동으로 삭제됩니다. 수정된 SQL 쿼리는 다음과 같습니다.
<code class="language-sql">DELETE FROM projects WHERE client_id = :client_id;</code>
이 접근 방식은 ON DELETE CASCADE
제약 조건을 활용하여 모든 관련 게시물을 동시에 제거합니다.
위 내용은 MySQL 조인을 사용하여 특정 클라이언트와 관련된 게시물을 삭제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!