MySQL トリガーを設定しようとしていますが、やりたいことを正確に行う方法がわかりません。MySQL @variable をセットアップする必要があると思いますが、私が試したことがうまくいかず、適切なリソースを見つけることができませんでした。phpMyAdmin で区切り文字を変更し、以下のコメントは実際のクエリでは使用されません。
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
ここで私が実際に行っているのは、サークルに配置されたチームを取り、チームの最後のプレイヤーが排除されたときに、それなしでサークルを閉じることです。
phpMyAdmin からのエラー メッセージは次のとおりです。
#1363 - INSERT トリガーに OLD 行がありません
助けてくれてありがとう
新しい試み:
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 - SQL 構文にエラーがあります。near '; を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。9行目のEND'