如果一列值 >= 另一列值的 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 中,true
是 1
而 false
是 0
.
我有一个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 中,true
是 1
而 false
是 0
.