반응형
내 스토리지는 INNODB입니다. I'm trying to create an trigger with 2 queries in IF statement. 당신은 내게 오류를주는 방아쇠를 볼 수 있습니다
delimiter |
CREATE TRIGGER count_delete_videos BEFORE DELETE ON videos
FOR EACH ROW BEGIN
UPDATE counts SET count = count - 1 WHERE name = 'all';
IF OLD.published = 1 THEN
DELETE FROM videos_categories WHERE id_video = OLD.id;
DELETE FROM videos_tags WHERE id_video = OLD.id;
END IF;
END;
|
delimiter ;
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= OLD.id;
END IF;
END' at line 6
이것은 내가 첫 번째로 활성화하는 2 개의 트리거입니다.
delimiter |
CREATE TRIGGER count_delete_videos_tags AFTER DELETE ON videos_tags
FOR EACH ROW BEGIN
UPDATE tags SET count = count - 1 WHERE id = OLD.id_tag;
END;
|
delimiter ;
delimiter |
CREATE TRIGGER count_delete_videos_categories AFTER DELETE ON videos_categories
FOR EACH ROW BEGIN
UPDATE categories SET count = count - 1 WHERE id = OLD.id_category;
IF OLD.id_category <> 20 AND OLD.id_category <> 34 THEN
UPDATE counts SET count=count-1 WHERE name='english';
ELSEIF OLD.id_category = 34 THEN
UPDATE counts SET count=count-1 WHERE name='german';
ELSEIF OLD.id_category = 20 THEN
UPDATE counts SET count=count-1 WHERE name='italian';
END IF;
END;
|
delimiter ;
하지만 이것은 완벽하게 작동합니다
delimiter |
CREATE TRIGGER count_delete_videos BEFORE DELETE ON videos
FOR EACH ROW BEGIN
UPDATE counts SET count = count - 1 WHERE name = 'all';
IF OLD.published = 1 THEN
DELETE FROM videos_categories WHERE id_video = OLD.id;
END IF;
END;
|
delimiter ;
Query OK, 0 rows affected (0.16 sec)
첫 번째 트리거가 작동하도록하려면 어떻게해야합니까? 내가 뭘 잘못하고 있니? 도와 주셔서 감사합니다.
해결 방법
두 트리거 모두 정상이라고 말할 수 있지만 다음을 시도해 볼 수 있습니다.
DELIMITER $$
CREATE TRIGGER count_delete_videos BEFORE DELETE ON videos
FOR EACH ROW
BEGIN
UPDATE counts SET count = count - 1 WHERE name = 'all';
IF OLD.published = 1 THEN BEGIN
DELETE FROM videos_categories WHERE id_video = OLD.id;
DELETE FROM videos_tags WHERE id_video = OLD.id;
END; END IF;
END$$
DELIMITER ;
참조 페이지 https://stackoverflow.com/questions/10374454
반응형
'MySql' 카테고리의 다른 글
MySQL 플래그의 데이터 유형은 무엇입니까? (0) | 2021.02.13 |
---|---|
MySQL 외래 키 제약 조건을 추가하기 위해 MySQL 테이블을 변경하면 오류가 발생합니다. (0) | 2021.02.13 |
MySQL 설치 중 오류 1045 MySQL (0) | 2021.02.13 |
MySQL "지정된 키가 너무 깁니다. 최대 키 길이는 1000 바이트입니다." (0) | 2021.02.13 |
MySQL mysql 스레드 스택 오버런을 어떻게 해결합니까? (0) | 2021.02.13 |
댓글