홈>
다음 트리거가 있습니다 :
CREATE TRIGGER `delete_scores_trigger` AFTER DELETE ON `scores`
FOR EACH ROW BEGIN
UPDATE `users`
SET `darts_thrown` = ((SELECT `darts_thrown`
FROM (SELECT * FROM users) as utable
WHERE `id` = old.user_id) - old.darts_thrown)
WHERE `users`.`id` = old.user_id;
END
'scores'테이블에는 아래와 같이 두 개의 외래 키가 있습니다 :
ALTER TABLE `scores`
ADD CONSTRAINT `scores_game_id_foreign` FOREIGN KEY (`game_id`)
REFERENCES `games` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `scores_user_id_foreign` FOREIGN KEY (`user_id`)
REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
COMMIT;
SCORE가 삭제 된 후 'users'에서 'darts_thrown'필드를 업데이트하고 싶습니다. 외래 키 때문에 '게임'이 삭제 될 때마다 해당 '점수'레코드도 삭제됩니다. 해당 시점 이후 또는 그 전에 'user'. 'darts_thrown'이 트리거로 업데이트되어야합니다.
- 답변 # 1
관련 질문
- mysql : 조건이있는 열의 값을 다시 정렬하려면 어떻게해야합니까?
- 숫자를 알파벳으로 바꾸십시오. 예를 들어 112는 AAB로, 1132는 AACB로 mysql에서
- mysql : SQL에서 여러 테이블에서 합산하고 주별로 그룹화하는 방법
- mysql : 선택 범위의 데이터에는 어떤 기능을 사용할 수 있습니까?
- mysql : Microsoft SQL의 Group By 기능
- mysql : SQL 쿼리 속도를 높이는 방법은 무엇입니까? 인덱스?
- mysql : SQLException : FLOAT 값에 대해 잘린 데이터
- mysql : 제한이 다른 SQL 선택 다중 테이블
- mysql : Clickhouse에서 기본 키 및 외래 키의 기능을 어떻게 사용할 수 있습니까?
- mysql : 여러 테이블 문제에서 SQL 쿼리 선택
https://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html 참조 작업 섹션에 캐스케이드 외래 키 작업은 트리거를 활성화하지 않습니다.