Có nhiều lỗi cần sửa.
- Không có câu lệnh kết thúc.
- Không theo thứ tự cú pháp nào.
- Khai báo các biến không đúng.
- Việc lựa chọn các biến từ một cột không đúng.
- Đồng hồ dựa trên giá đỡ không được hỗ trợ.
- Có chèn
inserted
không chỉ chứa một hàng? Nếu không, bạn cần mộtwhere
mệnh đề hoặclimit
. - v.v.
Tốt hơn bạn nên làm việc nhiều hơn để học.
Vui lòng tham khảo Cú pháp và ví dụ về trình kích hoạt
để hiểu rõ hơn.
Thay đổi mã của bạn như sau và nó có thể hoạt động nếu tất cả đều tốt trên các đối tượng cơ sở dữ liệu của bạn.
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;