mysql - 如何执行实现此条件的触发器?

标签 mysql database-trigger

我需要实现此过程的触发器:

我应该向该用户添加一些数字 50 到表 money 中,其中表 paym 中都有列 table1table2 不为空。

例如:用户'John' 的两列都不为空,并且在表money 中向他添加了50

下表示例:

表:paym

 ID        username        table1        Table2  
+-------+-------------+-------------+-----------+
|   1   |  John       |  Value      |    Value  |
+-------+-------------+-------------+-----------+
|   2   |  Alex       |  Null       |    Null   |
+-------+-------------+-------------+-----------+

表格:金钱

 ID      username      total_money      
+-------+-------------+-------------+
|   1   |  John       |     50      | 
+-------+-------------+-------------+
|   2   |  Alex       |     0       |
+-------+-------------+-------------+

查询:(不确定正确与否)

UPDATE 
 money
SET 
 money.total_money = money.total_money + 50
INNER JOIN 
 paym
ON
 money.username = paym.username
WHERE
   (paym.Table1 IS NOT NULL OR paym.Table1 <> '')
 AND
   (paym.Table2 IS NOT NULL OR paym.Table2 <> '')

最佳答案

这是用于此目的的触发器:

DELIMITER $$
CREATE trigger update_money_after_paym
AFTER INSERT ON paym
FOR EACH ROW
BEGIN
    IF (NEW.table1 IS NOT NULL AND NEW.table2 IS NOT NULL) THEN
        UPDATE money SET total_money = total_money + 50 WHERE username = NEW.username;
    END IF;
END;
$$
DELIMITER;

代码将在每次插入表 paym 后运行。如果新插入的记录将 table1table2 列都设置为非 NULL 值,则触发器将运行 UPDATE 查询,该查询将 50 添加到表 money 中的 total_money 列,查找与 中新插入的记录具有相同 username 的记录付款

关于mysql - 如何执行实现此条件的触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55560450/

相关文章:

php - HTML/PHP 登录重定向到 php

mysql - 显示两个表的输出,但通过第三个表匹配它们

php - Web 应用程序中的数据库前缀是什么?

postgresql - 防止删除一个用户的表记录并允许在 postgresql 中删除另一个用户

java.sql.SQLException : Parameter index out of range (1 > number of parameters, 即 0)。

mysql - 更新mysql数据库记录时出现问题

postgresql - Postgres 触发器无法插入包含数字或特殊字符的值

sql - Postgresql - "ERROR: syntax error at or near "-“尝试将数字参数传递给存储过程时

mysql - 触发器不会在 MySql WorkBench 中运行

postgresql - Postgres 中是否有任何已定义的函数可以让您知道什么操作会触发触发器?