首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在插入后触发器(Mysql)中声明条件基上的游标

问如何在插入后触发器(Mysql)中声明条件基上的游标
EN

Stack Overflow用户
提问于 2016-07-08 05:12:14
回答 1查看 1K关注 0票数 0

我的扳机在这里。

代码语言:javascript
复制
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,如下所示

代码语言:javascript
复制
if NEW.`id`=NULL THEN
   DECLARE `demo_cursor` CURSOR FOR SELECT * tbl_demo ;
ELSE
   DECLARE `demo_cursor` CURSOR FOR SELECT * tbl_demo2;
END IF

我试过了,但我不能对申报部分提出条件。

EN

回答 1

Stack Overflow用户

发布于 2016-07-08 05:48:47

不能在mysql中有条件地声明任何变量。句号。正如mysql关于声明的文档所述:

只允许在开始时声明..。结束复合语句,并且必须在开始时,在任何其他语句之前。

声明2个游标变量,并在应用程序逻辑中决定使用哪一个。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38259287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档