Как установить триггеры с динамическими значениями в MySQL? - PullRequest
0 голосов
/ 07 января 2011

У меня есть таблица A, в которой есть определенные записи с некоторыми полями значений, которые обновляются на регулярной основе, а затем у меня есть форма, которая принимает значение от пользователя. Теперь мне нужно установить триггер для этой таблицы, который запускается, и вставлять данные в другую таблицу B только тогда, когда значение поля таблицы A достигает введенного пользователем значения.

как то так -

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 ;

Теперь, как установить этот триггер с помощью пользовательских значений ???? Я новичок в триггерах и не имею идеи устанавливать триггеры с dymanic значениями. Как я могу это сделать ???? Пожалуйста, помогите !!

1 Ответ

1 голос
/ 12 января 2011

Я сделал это с помощью хранимых процедур.

Триггер был похож -

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 ;

Спасибо всем!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...