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 回答