mysql - 创建触发器以使用另一个表的更改来更新表

标签 mysql sql triggers syntax-error

我有一个包含两个表的数据库。他们是,

顺序(用户ID,名称,索引,总计)

userid | total

sandun | 2500
sandun | 4800
akmal  | 1200

paynow(userid,totalpayment)

userid  | totalpayment
sandun  | 14000
akmal   | 22500

我需要在订单表中插入对应的用户 ID 时更新 paynow 表。所以我为此做了一个触发器。就在这里,

CREATE TRIGGER totals
AFTER INSERT ON orders
FOR EACH ROW
BEGIN
WHEN(NEW.userid IS NOT NULL)
UPDATE paynow
SET totalpayment = totalpayment + NEW.total
WHERE userid = NEW.userid
END;

但它给出了这个错误。

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHEN(NEW.userid IS NOT NULL) UPDATE paynow SET totalpayment = totalpayment + N' at line 5

最佳答案

MySQL 触发器没有 when 子句。您可以改用 if 语句:

CREATE TRIGGER totals
AFTER INSERT ON orders
FOR EACH ROW
BEGIN
IF NEW.userid IS NOT NULL THEN
    UPDATE paynow
    SET totalpayment = totalpayment + NEW.total
    WHERE userid = NEW.userid;
END IF;
END;

关于mysql - 创建触发器以使用另一个表的更改来更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46621596/

相关文章:

debugging - 如何在 GAS 中测试触发功能?

php - 在 foreach 循环中构建一个可以排序的 php 数组

PHP 提交表单到电子邮件复选框

sql - 将两个小时添加到时间戳

mysql - 使用 ORDER BY 的 SQL 多列排序

mysql - 将 3 个 MySQL 表合并到合并表中得到太多结果

列中定义的 PostgreSQL 函数

mysql - Rails 3.0.3 中的 ActiveRecord 将 MySQL 的第 8 个字段变成了 BigDecimal。如何解决?

MySQL 用户权限转储存储过程

mysql - Sql 触发器条件检查不起作用