如何用mysql中的动态值设置触发器?

时间:2011-01-07 05:39:23

标签: sql mysql triggers

我有一个表A,它有一些记录,其中一些值字段定期更新,然后我有一个从用户获取值的表单。现在我必须在该表上设置一个触发器,该触发器仅在表A的字段值达到用户输入的值时运行并将数据插入到不同的表B.

这样的事情 -

DELIMITER $$
 CREATE TRIGGER data_gen
 AFTER UPDATE ON TABLE A
 FOR EACH ROW BEGIN
 IF NEW.field_val ='user-entered-value' THEN
 INSERT INTO TABLE B
 SET ...........;
END IF;
END$$
 DELIMITER ;

现在如何使用用户输入的值设置此触发器???? 我是Triggers的新手,并没有想法用dymanic值设置触发器。我怎么能这样做????请帮助!!

1 个答案:

答案 0 :(得分:1)

我是通过使用存储过程来完成的。

触发器就像 -

DELIMITER $$
 CREATE TRIGGER tigger_name
 AFTER UPDATE ON table name
 FOR EACH ROW BEGIN
CALL stored_proc(OLD.field1, NEW.field2);
END$$
 DELIMITER ;

和程序就像 -

DELIMITER $$
 DROP PROCEDURE IF EXISTS stored_proc$$
 CREATE PROCEDURE stored_proc(IN var1 INT,IN var2 INT)
 BEGIN
DECLARE  no_more_products INT DEFAULT 0;
DECLARE  id_u1 INT;
DECLARE  cur_rows CURSOR FOR 
 SELECT field1 from tableb where field3=var1 and field4=var2;
   DECLARE  CONTINUE HANDLER FOR NOT FOUND 
 SET  no_more_products = 1;
 OPEN  cur_rows;
 FETCH  cur_rows INTO rows;
 REPEAT
 IF  rows > 0 THEN
 INSERT INTO ......... ;
END IF;
 FETCH  cur_rows INTO rows;
 UNTIL  no_more_products = 1
 END REPEAT;
 CLOSE  cur_rows;
END$$
 DELIMITER ;

全部谢谢!