2010-06-30 6 views
2

누구나 하나의 쿼리에서 일대 다 관계가있는 행을 삭제하는 더 깨끗한 방법을 제안 할 수 있습니까?이 다중 테이블 삭제 문을 리팩터링하는 방법

이 작동하지만, using 절 또는 delete에 익숙하지 않아 작동 방식을 완전히 이해하지 못했습니다.

DELETE FROM ip_record, 
      entry using ip_record 
      inner join entry 
     where ip_record.site_id = ? 
     and ip_record.ip = ? 
     and ip_record.id = entry.ip_id 

나는이 연쇄 더 깨끗하게 할 수 있다는 개념을 가지고,하지만 난 제약의 불합리한 두려움을 가지고있다. DB는 MySQL입니다.

ALTER TABLE entry 
    ADD CONSTRAINT constr_entry_fk_ip 
    FOREIGN KEY fk_ip (ip_id) REFERENCES ip_record (id) 
    ON DELETE CASCADE ON UPDATE CASCADE 

을 다음과 같이

답변

4

예, 제약 조건을 추가 한 다음 당신은

DELETE FROM ip_record 
WHERE ip_record.site_id=? and ip_record.ip=? 

이전에 가입에 필요한 것을 할 수 있습니다.

+1

감사합니다. 정말 고맙습니다. – JAL

관련 문제