2017-07-30 60 views
0

直接向前,我有触发器mysql中使用条件状态的问题。 有2个状态,如果状态是'客人',那么做一些事情,否则做另一件事。如果在mysql中有条件触发?

这里就是我已经做出:

CREATE TRIGGER `update-gain` AFTER INSERT ON `payment` 
FOR EACH ROW BEGIN 
declare v_profit integer; 
declare v_deposit integer; 
declare v_status CHAR; 

select (status) into v_status from item where item.id_item=new.id_item; 
select sum(profit_owner) into v_profit from payment where payment.id_item=new.id_item; 
select sum(profit_guest) into v_deposit from payment where payment.id_item=new.id_item; 

if v_status like 'guest' then 
INSERT INTO gain 
(gain.profit, gain.modal,gain.date) 
VALUES 
(v_profit,v_deposit,new.date) 
ON DUPLICATE KEY UPDATE 
gain.profit = gain.profit+new.profit_owner, 
gain.modal = gain.deposit+new.profit_guest; 

else 
INSERT INTO gain 
(gain.profit,gain.tanggal) 
VALUES 
(v_profit,new.tgl_stok) 
ON DUPLICATE KEY UPDATE 
gain.profit = gain.profit_owner+new.profit_owner; 

end if; 
END 

到目前为止,我使用“喜欢”条款,但病情总是如此,甚至v_status不是“客人”。

我在这里做错了什么? 谢谢:)

+0

你尝试'设置v_status = new.status'?我想你会在这里使用你的方法收到默认值。 – Psi

+0

如果您发布表格和一些示例数据的结构将会很有用。 – wchiquito

+0

那么,'收益'表没有'状态'字段。 @Psi。 – Dika

回答

0

变化

if v_status like 'guest' then 

if v_status = 'guest' then 
+0

以前已经改变,但仍存在问题。总是遇到第一个条件条款 – Dika