2011-01-07 27 views
0

我有一个表A有定期更新的一些值字段的某些记录,然后我有一个表单,从用户接受一个值。现在,我必须在运行该表的表上设置一个触发器,并且仅当表A的字段值达到用户输入值时才将数据插入到不同的表B中。如何在mysql中设置动态值的触发器?

这样的事情 -

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 ; 

现在怎么设置该触发与用户enetered值???? 即时通讯新的触发器,并没有想法设置触发器与dymanic values.How我可以做到这一点? PLZ的帮助!

+1

X-Y问题是当你想做X,但你不知道如何。如果你可以做Y,你认为你可以破解X,但是你也不知道如何做Y.你问(我们)与Y的帮助。我们认为Y是一个想要解决的奇怪问题...所以只要问我们X. – 2011-01-07 07:08:15

回答

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 ; 

谢谢大家!

相关问题