Если значение одного столбца> = 1/3 другого значения столбца, введите текст в другой столбец - PullRequest
0 голосов
/ 19 марта 2019

У меня есть таблица, которая называется членство.Один столбец называется amount_paid, а другой - valid_membership.У меня есть еще одна таблица с именем m_type со столбцом, который называется цена.Условием связывания является WHERE members.type_id = m_type.type_id

. Я хочу, чтобы перед вставкой в ​​таблицу членства был добавлен триггер, чтобы проверить, составляет ли уплаченная сумма> = 1/2 цены.Если оно больше, я хочу, чтобы 1 было помещено в valid_membership, иначе, если это не так, тогда 0 будет помещено в valid_membership.

Просто возникли небольшие проблемы с правильным синтаксисом. Это то, что я уже пробовал-

DELIMITER
 //
CREATE TRIGGER valid_membership
    BEFORE INSERT ON membership
    FOR EACH ROW
        BEGIN
        IF (NEW.amount_paid >= 1/2 price) THEN
    SET valid_membership = '1' ELSE '0'
    WHERE membership.type_id = m_type.type_id
  END IF;
END
//
DELIMITER ;

Спасибо

1 Ответ

0 голосов
/ 19 марта 2019

1/3 price должен быть закодирован как price / 3, но еще лучше, вы можете использовать простой SQL:

update membership set
valid_membership = (
   select amount_paid
   from price
   where membership.type_id = m_type.type_id
) >= price / 3

, который может быть выполнен как простой запрос на обновление, как для проверки запроса, так и для обратной засыпки существующегоdata.

Для триггера:

set new.valid_membership = (
   select amount_paid
   from price
   where new.type_id = m_type.type_id
) >= price / 3

Здесь используется небольшая «хитрость», особенная для MySQL: в MySQL true равен 1, а false равен 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...