MySQL 트리거를 설정하려고하는데 정확히 원하는 것을 얻는 방법을 알 수 없습니다. MySQL @variable을 설정해야한다고 생각하지만 시도한 것은 제대로 작동하지 않아 좋은 리소스를 찾을 수 없었습니다. phpMyAdmin에서 구분 기호를 변경하고 아래의 주석은 실제 쿼리에서 사용되지 않습니다.MySQL @variable
CREATE TRIGGER coroner AFTER INSERT ON events
FOR EACH ROW BEGIN
UPDATE teams SET live = live-1 WHERE id = NEW.victim;
UPDATE teams SET score = score+NEW.value WHERE id = NEW.shooter;
UPDATE teams SET last_active = NEW.time WHERE id = NEW.shooter OR id = NEW.victim;
// up to here all works fine
IF (SELECT live FROM teams WHERE id = NEW.victim) = 0 THEN
UPDATE teams SET slot = slot-1 WHERE slot > OLD.slot;
ENDIF;
END
은 내가 실제로 여기서 뭘하고있어 원 안에 팀을 복용하고, 팀의 마지막 플레이어가 제거되었을 때, 나는 그것을없이 원을 폐쇄하고있다.
CREATE TRIGGER coroner AFTER INSERT ON events
FOR EACH ROW BEGIN
UPDATE teams SET live = live-1 WHERE id = NEW.victim;
UPDATE teams SET score = score+NEW.value WHERE id = NEW.shooter;
UPDATE teams SET last_active = NEW.time WHERE id = NEW.shooter OR id = NEW.victim;
SET @pivot := (SELECT slot FROM teams WHERE id = NEW.victim);
IF (SELECT live FROM teams WHERE id = NEW.victim) = 0 THEN
UPDATE teams SET slot = slot+1 WHERE slot < @pivot;
ENDIF;
END
오류 :
도움#1064 - 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 '; END' at line 9
새로운 시도에 대한
#1363 - There is no OLD row in on INSERT trigger
감사 : 여기
는 phpMyAdmin과에서 오류 메시지입니다