2014-02-06 54 views
0

的更新來更新第二列的值,我有結構像這樣我的表:創建觸發器來第一列

products: 
mrp | discount | price 

我想創建一個觸發器,這樣,如果我改變貼現值它集價格相應。

create trigger updateprice on products 
after update 
as if(update(discount)) 
update products set price=((100-discount)/100)*mrp; 

然而,這是給我語法錯誤&我無法找到確切的代碼吧。任何人都可以幫忙嗎?

回答

1

您需要一個BEFORE觸發器,但不是AFTER

delimiter // 

create trigger updateprice before update on products 
    for each row begin 
    if new.discount <> old.discount then 
     set new.price = ((100 - new.discount)/100) * new.mrp; 
    end if; 
    end; 
// 

delimiter ; 
+0

我不明白,只有在更新折扣欄後,我想要更新價格欄,所以在邏輯上它應該是After和Not Before。我還需要添加如果條件以及我想觸發特定列上的事件。 –

+0

觸發'AFTER'觸發器後,您無法處理'NEW'數據。由於它是另一列的數學表達式,因此您可以在觸發前使用條件計算並設置它。 –

+0

條件可以像'如果NEW.discount <> OLD.discount然後設置NEW.price = ...'。 –