Назначение триггера:
Я должен + добавить некоторое число 50 к этому пользователю в таблицу money
, где в таблице paym
оба столбца table1
и table2
не пусты.
Например: у пользователя '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 |
+-------+-------------+-------------+
Триггер ниже, отлично работает только тогда, когда мы вставляем все таблицы одновременно. Но это не работает, если вы вставляете только username
две таблицы пустыми, а после вставки, если вы добавляете значения в пустых таблиц table1
и 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;