我在MySQL中有四個table1(日期,打開,高,低,關閉, 計算)。我試圖找出一種方法來創建一個觸發器,以便在表1中更新新值時,將使用先前行值更新計算字段。我目前使用下面的觸發器使用更新計算場當前高,當前低和當前接近訪問MySQL觸發器中的上一行值
DELIMITER //
create TRIGGER `updatetable1` before insert ON `table1` FOR EACH ROW begin
set NEW.Calculation=((NEW.High-New.Low)*0.118)+NEW.Close;
end //
DELIMITER ;
現在我想使用下面的邏輯來修改公式,一點點:
Calculation (i) =((High(i-1) -Low(i-1))*0.118)+Close(i-1);
我怎麼能訪問以前行值高,低和克洛斯的精選e在此觸發器中更新當前計算的行值?
例子:
你似乎意識到'新'而不是'老'。從手冊:「在觸發器主體中,您可以使用別名OLD和NEW來引用主題表中的列(與觸發器關聯的表)。OLD.col_name在更新之前引用現有行的列或刪除。NEW.col_name是指要插入的新行的列或更新後的現有行的列。「 –
@ÁlvaroGonzález:我寫下邏輯如下: set NEW.Calculation =((OLD.High -OLD.Low)* 0.118)+ OLD.Close; 它向我顯示以下錯誤: 錯誤代碼:1363.在插入觸發器上沒有舊行 –
對不起,我誤解了你的問題。我以爲你正在寫一個UPDATE觸發器。 –