gpt4 book ai didi

mysql - phpmyadmin mysql触发器语法错误

转载 作者:行者123 更新时间:2023-11-29 02:25:02 25 4
gpt4 key购买 nike

我正在尝试编写一个 mySQL 跳跳程序,但我无法将我的代码放入 phpMyAdmin MySQL 而不会出现语法错误。有人可以帮帮我吗?

表格:

jeu

我的触发器:

CREATE TRIGGER after_jeu_insert ON jeu
AFTER INSERT
AS
BEGIN
DECLARE @gameid int, @oldTurn int, @newTurn int
SELECT @gameid=idpartie FROM INSERTED
SELECT @oldturn=tour FROM partie WHERE idpartie=@gameid
IF(@oldTurn IS NULL)
{
SET @newTurn = 1
}
ELSE
{
IF(@oldTurn==1)
SET @newTurn = 2
ELSE
SET @newTurn = 1
}
UPDATE partie SET tour = @newTurn, derniercoup = NOW() WHERE idpartie = @gameid
END

我没有找到错误,如果有人能帮助我,那就太好了。谢谢

最佳答案

有很多错误需要更正。

  1. 语句没有结束。
  2. 没有遵循语法顺序。
  3. 变量声明不正确。
  4. 从列中选择的变量不正确。
  5. 不支持基于大括号的时钟。
  6. inserted 表是否只包含一行?否则,您需要一个 where 子句或 limit
  7. 等等

你最好多工作学习。
请引用Trigger Syntax and Examples为了更好地理解。

如下更改您的代码,如果您的数据库对象一切正常,它可能工作。

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;

关于mysql - phpmyadmin mysql触发器语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23979258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com