我有一个表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值设置触发器。我怎么能这样做????请帮助!!
答案 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 ;
全部谢谢!