我有一张叫做会员资格的桌子。一列称为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 ;
谢谢
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
。