2012-12-16 3 views
-1

나는 포럼 시스템에서 작업 중이므로 특정 포럼에서 모든 주제와 게시물을 삭제해야합니다.데이터를 가장 효율적으로 삭제하는 방법

모든 게시물을 보유하는 posts 테이블이 있습니다. 각 게시물은 자신이 속한 주제의 ID 인 topic_id 필드를가집니다. 주제는 topics 테이블에 있으며 각 주제에는 속한 포럼의 ID 인 forum_id 필드가 있습니다.

이제 ID가 1 인 포럼을 삭제할 때이 포럼에서도 모든 주제와 게시물을 삭제할 수 있습니까?

+1

SQL'DELETE' 쿼리를 작성하십시오. –

+0

네,하지만 그 쿼리는 어떻게 생겼을까요? 간단한 DELTE 쿼리를 작성할 수 있지만이 중첩 된 구조를 주어진이 조금 복잡하게 보입니다 ... – Eleeist

+0

한 쿼리에서 다른 테이블에서 삭제하려고하지 않아야합니다. 대신 트랜잭션에서 여러 번 삭제하십시오. 문제가 발생하면 쿼리를 게시하고 문제를 설명하십시오. – Matthias

답변

3

먼저 그것을 밖으로 시도 SQL을 테스트하지 않았습니다 삭제는 자동으로 수행되며, 이점은 얻을 수있는 장점 중 하나입니다.

이러한 이유로 제한 조건을 적용 할 수 없거나 적용하지 않으려는 경우 관련 주제 및 게시물을 선택하는 방법부터 살펴보십시오. 이것은 당신에게 꽤 좋은 시작을 제공해야합니다.

DELETE FROM posts 
WHERE topic_id IN (
    SELECT id FROM topics WHERE forum_id=[id-to-delete] 
) 

같은 특정 예를 들어 뭔가

다음

DELETE FROM topics WHERE forum_id=[id-to-delete] 

트릭을 할해야합니다.

권하지 않으므로 양해 해 주시기 바랍니다. 데이터 일관성을 위해 데이터 일관성 도구를 사용하십시오.

0

이 sql은 포럼과 관련된 모든 게시물을 삭제해야합니다. 1. 주제는 여전히 데이터베이스에 있으므로 추가로 삭제해야합니다. 당신이 ON DELETE CASCADE 맛의 외래 키 제약 조건을 사용하는 경우, 하위 : , 그냥 :)

나는 당신이 당신의 데이터 구조에서 좋은 모습을 권장합니다 모든
DELETE FROM 
    posts 
WHERE 
    topic_id 
IN (
    SELECT 
     topic_id 
    FROM 
     topics 
    WHERE 
     forum_id = 1 
) 
관련 문제