2011-01-07 51 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 ; 

謝謝大家!

相關問題