如果一个列的值大于另一列的值的1/3,则将文本输入到另一列

时间:2019-03-18 22:13:47

标签: mysql triggers insert mamp

我有一个名为Membership的表。一列称为amount_paid,另一列称为valid_membership。 我还有一个名为m_type的表,其中有一个名为price的列。 链接子句是WHERE 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 个答案:

答案 0 :(得分:0)

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中,true1,而false0