我在创建触发器时遇到了一点问题,因为我必须声明一些变量,然后将其中一些变量设置为 0,因此它们将根据条件开始在循环中增加它们的值。无论如何,我要粘贴代码,以及它抛出的错误,希望有人能告诉我我做错了什么。谢谢。
CREATE TRIGGER update_request AFTER UPDATE ON medical_tests
FOR EACH ROW
BEGIN
DECLARE y INT, x0 INT, x3 INT, counting INT
SET y=0, x0=0, x3=0,
counting = count(SELECT * FROM medical_tests WHERE medical_tests.request_id = UPDATED.request_id)
WHILE (y<counting)
BEGIN
SET y=y+1
IF (medical_tests.status=1)
BEGIN
SET x0=x0+1
END
ELSEIF (medical_tests.status=3)
BEGIN
SET x3=x3+1
END
END IF
END WHILE
IF (x0>0 AND x0<counting)
BEGIN
UPDATE requests SET status=2 WHERE requests.id=UPDATED.request_id
END
ELSEIF (x3=counting)
BEGIN
UPDATE requests SET status=3 WHERE requests.id=UPDATED.request_id
END
ENDIF
END
它会引发以下错误:#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法,以便在 ' x0 INT, x3 INT,counting INT SET y=0, x0=0, x3=0,counting=count(SELECT * FROM m' at line 3.
上次我写了一个触发器,我是在 MySQL 服务器上做的,语法有点不同。也许我只需要创建一个过程并调用它。因此,如果有人可以提供帮助,我将不胜感激。