2015-01-02 4 views
0

내가 다른 테이블에 모든 열이있는 행을 삽입하는 트리거를 만들려고하고 다른 테이블에 행을 삽입 :트리거 삭제

'이것은 내가 지금까지 알아 낸이지만, 외설 t의 작업은 :

delimiter $$ 
CREATE TRIGGER item_deleted_move AFTER DELETE ON item 
begin 
insert into item_deleted (val1, val2, ...) values (old.val1, old.val2, ...); 
end$$ 
delimiter ; 
+0

# 1064 - 당신은 당신의 SQL 구문에 오류가 있습니다; – Genov

답변

2

을 사용하고 있습니다.

DELIMITER $$ 
CREATE TRIGGER item_deleted_moved 
AFTER DELETE ON item 
FOR EACH ROW -- You missed this part 
BEGIN 
    INSERT INTO item_deleted(val1, val2, ...) VALUES (old.val1, old.val2, ...); 
END$$ 
DELIMITER ; 

이제 당신은 당신이 BEGIN ... END 블록을 사용하지 않음으로써 그것을 단순화 할 수 있습니다 삽입을 제외하고 트리거에서 다른 작업을 수행하지 않는 경우. 이 경우 분리 문자를 변경할 필요가 없습니다. 여기

CREATE TRIGGER item_deleted_moved 
AFTER DELETE ON item 
FOR EACH ROW 
    INSERT INTO item_deleted(val1, val2, ...) VALUES (old.val1, old.val2, ...); 

SQLFiddle 데모입니다

0

당신은 $$에 구분 기호를 변경하지만, 삽입의 끝에서 당신은 오류의 근본은 당신이 CREATE TRIGGERFOR EACH ROW 절을 필요 그리워한다는 것입니다 ;