gpt4 book ai didi

Mysql 触发器语法错误

转载 作者:行者123 更新时间:2023-11-30 00:19:22 25 4
gpt4 key购买 nike

我有这个触发器

CREATE TRIGGER checkcollision AFTER UPDATE ON players BEGIN 
SELECT RAISE(ABORT, 'collision') FROM walls WHERE NEW.x=x AND NEW.y=y;
END;

mysql 5.1.72-0ubuntu0.10.04.1(Ubuntu)

但是我遇到了语法错误,而且我不知道错误在哪里......

编辑:

DELIMITER //
CREATE TRIGGER checkcollision AFTER UPDATE ON players BEGIN SELECT RAISE(ABORT, 'collision') FROM walls WHERE NEW.x=x AND NEW.y=y; END//
DELIMITER ;

这仍然出现语法错误...

enter image description here

这是一个语法错误:

DELIMITER // 
CREATE TRIGGER checkcollision AFTER UPDATE ON players
FOR EACH ROW
BEGIN
IF (SELECT count(*) FROM walls WHERE NEW.x=x AND NEW.y=y)>0 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Collision detected';
END IF;
END;//
DELIMITER ;

enter image description here

最佳答案

您可能没有更改DELIMITER

How do I do that?

使用DELIMITER命令,如下所述

创建触发器或过程时更改分隔符非常重要,因为否则在触发器主体内(例如在 SELECT 语句末尾)使用分号语句分隔符相对于语句处的分号来说是不明确的CREATE TRIGGER 语句结束。

这对于 MySQL 开发人员来说是一个非常常见的困惑源。

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

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