私はMySQLのテーブル1に4つの列を持っています(日付、オープン、ハイ、ロー、クローズ、 計算)。私は、新しい値がテーブル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を現在の計算の行の値を更新するこのトリガーで?
例:
「NEW」は認識していますが、「OLD」は認識していないようです。マニュアルから:「トリガー本体内で、別名OLDおよびNEWを使用して、サブジェクト表(トリガーに関連付けられた表)の列を参照できます。OLD.col_nameは、更新前の既存の行の列を参照しますNEW.col_nameは、挿入する新しい行の列または更新後の既存の行を参照します。 " –
@ÁlvaroGonzález:以下のようにロジックを書きました。 NEW.Calculation =((OLD.High -OLD.Low)* 0.118)+ OLD。閉じる。 これは私に次のエラーを表示します: エラーコード:1363. INSERTトリガーにOLD行がありません。 –
申し訳ありませんが、私はあなたの質問を誤解しました。あなたがUPDATEトリガーを書いていると思いました。 –