2011-10-17 1 views
1

그래서 나는 다음과 같은 쿼리가 :구문 오류

CREATE TRIGGER `before_delete` 
    BEFORE DELETE ON `abc` FOR EACH ROW 
    BEGIN 
     DELETE FROM def WHERE OLD.id = objID1 OR OLD.id = objID2; 
     DELETE FROM ghi WHERE OLD.id = objID; 
    END; 

을하지만 MySQL은 라인 1 ....

내가 무슨 짓을했는지에 'END'근처의 구문 오류가 있다는 불평 잘못된?

답변

4

절차 블록에 여러 문장을 포함 시키려면 DELIMTIER 트릭을 사용해야합니다. 그렇지 않으면 프로 시저의 끝과 내부 프로 시저의 끝 사이의 차이를 알 수 없습니다. documentation 페이지에는 구분 기호 키워드를 사용하는 예제가 있습니다.

당신에게 해당 페이지로 가서 둘러보고의 문제를 저장하려면, 나는이 문제를 해결할 것이라고 생각 :

DELIMITER $$ 
CREATE TRIGGER `before_delete` 
BEFORE DELETE ON `abc` FOR EACH ROW 
BEGIN 
    DELETE FROM def WHERE OLD.id = objID1 OR OLD.id = objID2; 
    DELETE FROM ghi WHERE OLD.id = objID; 
END $$ 
DELIMITER ;