如果一列值 >= 另一列值的 1/3 输入文本到另一列

If one column value is >= 1/3 of another column value input text into another column

我有一个table叫会员。一列称为 amount_paid,另一列称为 valid_membership。 我有另一个名为 m_type 的 table,其中有一列名为价格。 链接子句是 WHERE membership.type_id = m_type.type_id

我想要在加入会员资格之前触发 table 以检查支付的金额是否 >= 价格的 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/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

可以作为普通更新查询执行,以测试查询并回填现有数据。

对于触发器:

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

这确实使用了 MySQL 的一个小“技巧”​​:在 MySQL 中,true1false0.