首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Mysql过程未按预期执行

Mysql过程未按预期执行
EN

Stack Overflow用户
提问于 2019-06-27 00:29:29
回答 2查看 34关注 0票数 0

使用mysql 5.7,当我执行此过程时:

DELIMITER $$
CREATE PROCEDURE tres()
BEGIN
    DECLARE maxid INT;
    DECLARE x INT;
    SET maxid = 655;
    SET x=1;
    WHILE x<= maxid DO 
        INSERT INTO `forum_topicresponder` (topic_id, username, reply_id) SELECT p.topic_id, p.creator_name, p.id  FROM forum_post AS p  WHERE p.topic_id=x;
     SET  x = x + 1; 
     END WHILE;
END$$

我得到了

mysql>调用tres();

查询正常,0行受影响(3.49秒)

但是,当我对循环范围内的某个值执行INSERT时:

 INSERT INTO `forum_topicresponder` (topic_id, username, reply_id) SELECT p.topic_id, p.creator_name, p.id  FROM forum_post AS p  WHERE p.topic_id=42;

我看到插入的结果没有问题。

表模式:

CREATE TABLE `forum_topicresponder` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `topic_id` int(10) NOT NULL DEFAULT '0',
  `username` varchar(300) CHARACTER SET utf8mb4 NOT NULL DEFAULT 'na',
  `reply_id` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=94 DEFAULT CHARSET=latin1;

CREATE TABLE `forum_post` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `body` varchar(16000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `topic_id` int(11) NOT NULL DEFAULT '0',
  `creator_id` int(11) NOT NULL DEFAULT '0',
  `creator_name` varchar(30) NOT NULL DEFAULT 'NA',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6264595 DEFAULT CHARSET=utf8;

那么这里可能出了什么问题,我该如何修复它呢?

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

https://stackoverflow.com/questions/56777341

复制
相关文章

相似问题

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