我有一个名为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 ;
谢谢
答案 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中,true
是1
,而false
是0
。