Мне нужен триггер, реализующий этот процесс:
Я должен + добавить этому пользователю число 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 |
+-------+-------------+-------------+
Запрос для этого: (не уверен правильно или нет)
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 <> '')
@Bill Karwin Спасибо за ответ! Но он должен + добавить 50 для каждый раз, когда новые значения вставляются в paym
для каждая строка, где условие истинно!
Вот триггер для этой цели:
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
. Если во вновь вставленной записи оба столбца table1
и table2
имеют значения, отличные от NULL
, то триггер запускает запрос UPDATE
, который добавляет 50 к столбцу total_money
в таблице money
для записи, которая имеет то же username
, что и вновь вставленная запись в paym
.
Спасибо за ответ! @GMB Но вы проверили свой триггер выше? почему-то возникает синтаксическая ошибка! Когда я пытаюсь бежать!
@ShukurJank: только что добавил недостающую точку с запятой в конце утверждения UPDATE
. Если вы все еще получаете ошибки, пожалуйста, сообщите мне сообщение об ошибке.
Для этого не нужен триггер. Вам нужно использовать
AND
вместоOR
в ваших условиях, и вам нужно исправить синтаксис вашего ОБНОВЛЕНИЯ. Но соединение перед предложениемSET
.