我是SQL的初学者,即使在编程中,我最近也发现了触发器,我想计算最大活动线的数量,而活动权重的总和PS:主动记录用"取消= 0'"定义我有错误的#1064在我声明变量(第2行(
的线附近我将其运行到phpmyadmin(mysql(触发器中。
BEGIN
DECLARE @max_rows int;
DECLARE @max_tare int;
SET @max_rows = SELECT COUNT(*) FROM history WHERE cancled = 0;
SET @max_tare= SELECT SUM(tare) FROM history WHERE cancled = 0;
UPDATE max_tare
SET max_row = @max_rows,
max_tare = @max_tare
WHERE id = 1
END
我期望我更新了第1行,最大行数和积极权重的总和,但我有一个错误
mysql回复:#1064-'@max_rows int;语法错误;宣布 @max_tare int;设置@max_rows =从他的'AT 2行
中选择计数(*(
保罗评论后,我更改了代码:
BEGIN
DECLARE max_r int;
DECLARE max_t int;
SET max_r = SELECT COUNT(*) FROM history WHERE cancled = 0;
SET max_t = SELECT SUM(tare) FROM history WHERE cancled = 0;
UPDATE max_tare
SET max_row = max_r,
max_tare = max_t
WHERE id = 1
END
这是新错误:
mysql回复:#1064-从select count(*(附近的语法错误 历史上取消= 0;设置max_t = select sum(TARE(第4行
提前。
感谢@paul spiegel和@forpas的帮助该代码帮助解决了问题
IF(NEW.mix != '') THEN
UPDATE max_tare
SET max_row = (SELECT COUNT(*) FROM history WHERE nom LIKE NEW.mix),
max_tare = (SELECT SUM(tare) FROM history WHERE cancled = 0)
WHERE id = 1;
ELSE
UPDATE max_tare
SET max_row = (SELECT COUNT(*) FROM history WHERE cancled = 0),
max_tare = (SELECT SUM(tare) FROM history WHERE cancled = 0)
WHERE id = 1;
END IF;
END
这对我来说很好,谢谢大家