#mysql #triggers #mamp
#mysql #триггеры #mamp
Вопрос:
У меня есть таблица с именем membership. Один столбец называется amount_paid, а другой называется valid_membership. У меня есть другая таблица с именем m_type и столбцом с именем price. Связывающее предложение — это ГДЕ membership.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:
DELIMITER //
CREATE TRIGGER valid_membership
BEFORE INSERT ON membership
FOR EACH ROW
BEGIN
SELECT
price INTO @price
FROM
m_type
WHERE
type_id = NEW.type_id
AND ... -- something missing here as linking by the type_id only is too wide, imho
;
SET NEW.valid_membership = IF(NEW.amount_paid >= @price / 2, 1, 0);
END
//
DELIMITER ;