2017-12-28 19 views
0
DELIMITER $$ 
CREATE TRIGGER arrange_serial 
AFTER DELETE ON db.table 
FOR EACH ROW 
BEGIN 
    UPDATE db.table set serial=serial-1 where serial > DELETED.serial; 
END$$ 
DELIMITER ; 

삭제시 오류가 발생합니다. db.DELETED이 존재하지 않습니다. 아무도 나에게 내가 틀린 곳을 제안 할 수 있니?mysql 트리거 업데이트가 작동하지 않습니다.

+0

여기에 sqlserver와 mysql (또는 oracle) 코드가 매시업되어있는 것처럼 보입니다. mysql에서는 트리거를 트리거하는 트리거를 실행할 수 없습니다. –

답변

0

삭제 된 행의 이전 값을 참조해야합니다. DELETED 대신 OLD을 사용하십시오.

DELIMITER $$ 
CREATE TRIGGER arrange_serial 
AFTER DELETE ON db.table 
FOR EACH ROW 
BEGIN 
    UPDATE db.table set serial=serial-1 where serial > OLD.serial; 
END$$ 
DELIMITER ;