我的扳机在这里。
mysql> CREATE TRIGGER `trg_after_insert` AFTER INSERT ON `tbl_demo`
-> FOR EACH ROW
-> BEGIN
-> DECLARE `done` BOOL DEFAULT FALSE;
-> DECLARE `_id` INT;
-> DECLARE `_value` VARCHAR(50);
->
-> DECLARE `demo_cursor` CURSOR FOR
-> SELECT * -- <- SELECT `id`, `value` Recommendation for use
-> FROM `tbl_demo`
-> WHERE `id` = NEW.`id`;
-> DECLARE CONTINUE HANDLER FOR NOT FOUND SET `done` := TRUE;
->
-> OPEN `demo_cursor`;
->
-> `read_loop`: LOOP
-> FETCH `demo_cursor` INTO `_id`, `_value`;
->
-> IF `done` THEN
-> CLOSE `demo_cursor`;
-> LEAVE `read_loop`;
-> END IF;
->
-> INSERT INTO `result_demo`
-> (`id`, `value`)
-> VALUES
-> (`_id`, `_value`);
-> END LOOP;
-> END//我希望根据新字段值声明demo_cusror,如下所示
if NEW.`id`=NULL THEN
DECLARE `demo_cursor` CURSOR FOR SELECT * tbl_demo ;
ELSE
DECLARE `demo_cursor` CURSOR FOR SELECT * tbl_demo2;
END IF我试过了,但我不能对申报部分提出条件。
发布于 2016-07-08 05:48:47
不能在mysql中有条件地声明任何变量。句号。正如mysql关于声明的文档所述:
只允许在开始时声明..。结束复合语句,并且必须在开始时,在任何其他语句之前。
声明2个游标变量,并在应用程序逻辑中决定使用哪一个。
https://stackoverflow.com/questions/38259287
复制相似问题