0

より大きい条件のトリガーを作成することは可能ですか。列温度があり、15 秒ごとに新しい値がその列に格納されているとします。したがって、値が定義済みの値 (たとえば 100 度) よりも大きくなると、トリガーが生成されます。mysqlでそれを行うことは可能ですか?

4

1 に答える 1

4

MySql は、Oracle のように条件付きトリガーを実装していません。たとえば、Oracle では次のようになります。

CREATE TRIGGER triggername AFTER INSERT ON tablename FOR EACH ROW
WHEN ( condition )
BEGIN 
   ........
END;

トリガーは、condition一致した場合にのみ発生します。

MySql では、トリガーは毎回起動されます。
ただし、トリガー内で条件付き IF ステートメントを使用して、いくつかの条件が満たされた場合にのみいくつかのアクションを実行することは可能です。次に例を示します。

Create table temperature(
  id int primary key auto_increment,
  temperature decimal( 5, 1 )
  );

Create table temp_above_100(
  id int primary key auto_increment,
  temperature decimal( 5, 1 )
  );

CREATE TRIGGER triggername 
AFTER INSERT ON temperature FOR EACH ROW
BEGIN
  IF new.temperature >= 100 THEN
     INSERT INTO temp_above_100( temperature )
     VALUES ( new.temperature );
  END IF;
END;/

INSERT INTO temperature( temperature ) 
VALUES (10), (20), (100), (120 );

この例の結果を見るには、http ://www.sqlfiddle.com/#!2/6a930/1 のリンクをクリックしてください。

于 2013-09-24T17:26:15.443 に答える