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

时间:2019-04-07 15:10:08

标签: mysql database-trigger

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

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

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

下表中的示例:

表:paym

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

表格:money

 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 <> '')

1 个答案:

答案 0 :(得分:0)

这是为此目的的触发器:

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查询,向列{{1}添加50表total_money中的}与money中新插入的记录具有相同的username的记录。