phpMyAdmin
 sql >> Base de données >  >> Database Tools >> phpMyAdmin

phpmyadmin erreur de syntaxe du déclencheur mysql

Il y a beaucoup d'erreurs à corriger.

  1. Pas de fin d'instructions.
  2. Aucun ordre de syntaxe suivi.
  3. La déclaration des variables n'est pas correcte.
  4. La sélection dans les variables d'une colonne n'est pas correcte.
  5. Les horloges basées sur les accolades ne sont pas prises en charge.
  6. Est-ce que le tableau inserted contenir une seule ligne ? Sinon, vous avez besoin d'un where clause ou limit .
  7. etc.

Vous feriez mieux de travailler plus pour apprendre.
Veuillez vous référer à Syntaxe de déclencheur et exemples pour une meilleure compréhension.

Modifiez votre code comme suit et il peut fonctionne si tout va bien sur vos objets de base de données.

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;