如果一个列值> =另一列值的1/3,则将文本输入另一列

问题描述 投票:0回答:1

我有一张叫做会员资格的桌子。一列称为amount_paid,另一列称为valid_membership。我有另一个名为m_type的表,其中包含一个名为price的列。 connections子句是WHERE membership.type_id = m_type.type_id

在成员资格表上插入之前我想要一个触发器来检查支付的金额是否> = 1/2的价格。如果它更大,我希望1被置于valid_membership else中,如果它不是真的那么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 ;

谢谢

mysql triggers insert mamp
1个回答
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中,true1false0

© www.soinside.com 2019 - 2024. All rights reserved.