【发布时间】:2019-12-18 09:12:31
【问题描述】:
我有一种情况,我试图创建一个触发器,一旦我手动更新 table1 中有关游戏编号的特定行,我希望它比较/评估 table1 中已更新的更改(liveResult) 到 table2(prediction) 中的现有值,然后如果这些值是正确的,则需要将 table2(predictionCorrect) 中有关该游戏编号的所有行更新为值“1”,否则值为“0”。
我不是 MySQL 专家,我不断收到以下错误,我无法确定问题所在,当然这可能很简单,但不幸的是我无法发现它......
我已经尝试了一些展示如何执行类似操作的网站,但此时我不断收到以下错误:
"1064 - 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在第 9 行的 '' 附近使用"
不幸的是,我不是 MySQL 专家,之前从未创建过触发器,所以我认为这应该是简单的事情......
CREATE TRIGGER trg_update_tableCorrect
AFTER UPDATE ON table1
FOR EACH ROW BEGIN
IF (liveResult = (Select prediction from table2 where gameNr = '5'))
THEN
UPDATE table2
SET predictionCorrect = '1'
where gameNr = '5';
ELSE
UPDATE table2
SET predictionCorrect = '0'
where gameNr = '5';
END IF;
END;
我想要做的就像下面的例子:
Table 1:
gameNr | liveResult
5 | 10
Table 2:
gameNr | prediction | predictionCorrect
5 | 10 | 1 // Prediction correct!
5 | 15 | 0 // Prediction wrong!
5 | 10 | 1 // Prediction correct!
任何帮助将不胜感激!
【问题讨论】:
-
检查语法使用旧的,新的方法,顺便说一句,我认为错误是由于您在启动触发器之前没有使用分隔符。
-
@James 会研究一下 old.. 的使用。让我试试分界符,忘记加了..ai...
-
@James 好的,所以分隔符帮助保存了触发器,因此它就位,所以我知道尝试更改 LiveResult 但它似乎没有更新表 2 中的 predictionCorrect ... 会调查这个有点,你很高兴关于评估的 if 语句是正确的?
-
不,有问题。触发器根据每一行和你的 ifliveresult=value 工作,那么你想要实现什么?
标签: mysql triggers phpmyadmin