MySQL触发器:如何仅在填充某一列时插入


MySQL Triggers: How do I only insert if a certain column is populated?

我有两个表:1) 订单2) 交易-存储针对购物者的忠诚度积分

现在,在我的代码(PHP)中,我有一个特定的列(点数——只有当用户获取了他的忠诚卡号时,才会将其输入订单表,否则它将保持为空)。

如果积分被插入到我的订单表上的积分列中,(换句话说,如果购物者赢得了积分)触发器应该触发并将订单表中的一组值(包括积分)插入到交易表中。

问题1)这是一个后插入。如何从刚刚插入订单表的行中获取值?

问题2)只有在点列有值的情况下,我如何实现这一点?

EDIT:每当有东西插入订单表时,触发器就会触发,但只有在orders.points列中有值的情况下,才能在事务表中输入条目。

以下是表格:

订单:

Field                Null  Key  Extra           
order_id             
user_id              NO    MUL                  
vendor_id            NO    MUL                  
order_number         YES   MUL                  
user_info_id         YES   MUL                  
order_total          NO                         
order_subtotal       YES                        
order_tax            YES                        
order_tax_details    NO                         
order_shipping       YES                        
order_shipping_tax   YES                        
coupon_discount      NO                         
coupon_code          YES                        
order_discount       NO                         
order_currency       YES                        
order_status         YES                        
cdate                YES                        
mdate                YES                        
ship_method_id       YES   MUL                  
customer_note        NO                         
ip_address           NO                         
waybill_number       YES                        
shipping_carrier_id  YES                        
shipping_location    NO                         
insurance            NO                         
points               YES                        
loyalty_card_number  YES  

交易:

Field               Null  Key  Extra           
id                  NO    PRI  auto_increment  
transactiontypeid   NO    MUL                  
orderid             NO                         
orderstatusid_from  NO                         
orderstatusid_to    NO                         
ordervalue          NO                         
points              YES                        
loyaltycardnumber   YES                        
integrationfileid   YES                        
createduserid       NO                         
createddate         NO  

我对触发器很陌生(正如你所看到的)-谢谢你的帮助。

J

请这样尝试,

CREATE TRIGGER trigger_name
AFTER INSERT
   ON ORDER FOR EACH ROW
BEGIN
  // you can access your inserted row value like this
if (new.points > 0)
{
  //your insertion code goes here
}
END;