2017-03-29 5 views
0

時間を入力するトリガーを作成したいと思います。開始時刻と終了時刻に基づいて期間を計算するmysqlトリガー

私は次のコードを書いていますが、それは間違っていて、私にはその理由がわかりません。

create trigger Calculate_Duration 
before insert or update on Tbl_Eventos 

for each row 
declare 
begin 
    :new.duration := :new.endtime - :new.starttime 
END; 

と私のテーブル、このようなものです:

Table

+0

に動作します、のは、これを試してみましょうトリガーの代わりに生成された列を考慮する必要があります。 [Generated Column Docs](https://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html) – Arth

+0

私は '5.7.17-0ubuntu0.16.04.1'を使用しています。 – AnonDSB

+0

これは5.7.6より最近のものです。あなたはそれらを使用できるはずです。 – Arth

答えて

0

あなたは5.7.6+あなたのMySQLを使用している場合

それは

CREATE TRIGGER Calculate_Duration BEFORE INSERT OR UPDATE ON Tbl_Eventos FOR EACH ROW SET NEW.duration = TIMEDIFF(NEW.endtime, NEW.starttime); 
+0

ありがとう、その仕事。 – AnonDSB

+0

if条件を作成するにはどうすればよいですか?もしstarttime = 8:00、endtime = 18:00ならduration = 8:00 – AnonDSB

+0

私はこれを次のようにしています:CREATE DEFINER = 'root' @'% 'TRIGGER Calculate_Duration_insert BEFORE INSERT ON Tbl_Eventos 各行用 IF TIMEDIFF (NEW.endtime、NEW.starttime)> 80000 THEN \t SET NEW.duration = '8:00:00'; ELSE \t SET NEW.duration = TIMEDIFF(NEW.endtime、NEW.starttime); END IF – AnonDSB

関連する問題