가장 낮은 ID를 가진 행을 트리거가 반복적으로 삭제하도록 만들지 않겠습니다. 그리고 되풀이해서 나는 숫자와 사용자 이름이 두 줄로 같은 것을 의미합니다. 예를 들어MSQ는 동일한 테이블에서 DELETE 할 수 없습니다. SELECTS - DELETE TRIGGER의 회피 방법에 대한 도움이 필요합니다.
ROW1 : ID : 1 감소 : 1, UN : MVJ 및
행 2 : ID : 2 감소 : 1, UN : MVJ
이러한 되풀이된다있지만 'Nr'또는 'UN'이 다른 경우에는 그렇지 않습니다.
제목에서 알 수 있듯이 MYSQL은 적어도 내 SQL 문을 작성한 방식으로는 그렇게 할 수 없습니다. 전적으로 다른 방법으로 문제를 해결할 수 있습니다.
Drop trigger no_double_reservations;
DELIMITER !!
CREATE TRIGGER no_double_reservations
AFTER INSERT ON tilmeldte
FOR EACH ROW BEGIN
IF(
SELECT COUNT(*)
FROM tilmeldte
WHERE (kursus_nr, username)
IN (
SELECT kursus_nr, username
FROM tilmeldte
GROUP BY kursus_nr, username
HAVING COUNT(*) = 2
) = 2
)
THEN
DELETE FROM tilmeldte
Where tilmeldingsid = (
Select MIN(`tilmeldingsid`)
FROM tilmeldte
WHERE (kursus_nr, username)
IN (
SELECT MIN(kursus_nr), username
FROM tilmeldte
GROUP BY kursus_nr, username
HAVING COUNT(*) = 2
)
);
END IF;
END!!
DELIMITER ;
귀하 께서 도와 주시면 감사하겠습니다.
사전 대책을 세우시고 이중 예약을하지 않으시겠습니까? 삽입하기 전에 검사를하고 오류 메시지가있는 데이터 저장을 거부합니까? –
가능한 복제본 [DELETE TRIGGER-FAILURE의 문언] (http://stackoverflow.com/questions/26170470/if-statement-in-delete-trigger-failure) 이전에 물어 본 질문과 다른 질문입니까? –
@BerndLinde 중복이 아니기 때문에, 그는 마지막 질문 이후로 작동하지 않는다는 것을 알고 있기 때문에 ** 다른 ** 방법을 요구하고 있습니다. – bummi