Има много грешки за коригиране.
- Без край на изразите.
- Не е спазен ред на синтаксис.
- Декларацията на променливите не е правилна.
- Изборът на променливи от колона не е правилен.
- Часовниците, базирани на скоби, не се поддържат.
- Таблица
inserted
съдържа само един ред? В противен случай имате нужда отwhere
клауза илиlimit
. - и др.
По-добре работете повече, за да научите.
Моля, вижте Синтаксис и примери на тригери
за по-добро разбиране.
Променете кода си по следния начин и може работи, ако всичко е наред с обектите на вашата база данни.
drop trigger if exists after_jeu_insert;
delimiter //
CREATE TRIGGER after_jeu_insert after insert ON jeu for each row
BEGIN
DECLARE _game_id int;
DECLARE _old_turn int;
DECLARE _new_turn int;
-- following line may not require limit clause
-- if used proper where condition.
SELECT idpartie into _game_id FROM INSERTED limit 1;
SELECT tour into _old_turn FROM partie WHERE idpartie = _game_id;
IF _old_turn IS NULL then
SET _new_turn = 1;
ELSIF _old_turn = 1 then
SET _new_turn = 2;
ELSE
SET _new_turn = 1;
END IF;
UPDATE partie
SET tour = _new_turn
, derniercoup = NOW()
WHERE idpartie = _game_id;
END;
//
delimiter;