mysql - mysql更新语句未在while循环中设置变量执行
问题描述
我有一个设置表,需要追溯更新设置,但没有执行更新语句。
设置看起来像这样
Module.Component.Name.X.Regex.SearchOptions.Replacements.Pattern
X = 是一个数字,可以是 1 或 20,这个可以配置。
现在我需要将这些设置追溯更新到这个结构
Module.Component.Name.X.Regex.SearchOptions.Replacements.Y.Pattern
由于搜索选项可能有多个正则表达式模式
我有一个工作代码,但我只能更新 1 个模块,我需要全部更新。
以下存储过程工作正常:
DELIMITER //
CREATE PROCEDURE `TEST`()
BEGIN
DECLARE oldSettingNameReplacement VARCHAR(1024);
DECLARE newSettingNameReplacement VARCHAR(1024);
SET @oldSettingNameReplacement = CONCAT('Module.Components.Name.1.SearchOptions.Replacements.Replacement');
SET @newSettingNameReplacement = CONCAT('Module.Components.Name.1.SearchOptions.Replacements.1.Replacement');
UPDATE settings SET settings.settingname=@newSettingNameReplacement WHERE settings.settingname like @oldSettingNameReplacement;
END //
现在这个没有,我不知道为什么:
DELIMITER //
CREATE PROCEDURE `TEST`()
BEGIN
DECLARE oldSettingNameReplacement VARCHAR(1024);
DECLARE newSettingNameReplacement VARCHAR(1024);
DECLARE i INT DEFAULT 0;
SET @i = 1;
WHILE @i <= 2 DO
SET @oldSettingNameReplacement = CONCAT('Module.Components.Name.', @i, '.SearchOptions.Replacements.Replacement');
SET @newSettingNameReplacement = CONCAT('Module.Components.Name.', @i, '.SearchOptions.Replacements.1.Replacement');
UPDATE settings SET settings.settingname=@newSettingNameReplacement WHERE settings.settingname like @oldSettingNameReplacement;
SET @i = @i + 1;
END WHILE;
END //
由于某种原因,更新语句没有执行,我使用了一个触发器来查找是否执行了更新,它没有触发。
我也尝试添加“引号”,但这也没有效果:
SET @oldSettingNameReplacement = QUOTE(CONCAT('Module.Components.Name.', @i, '.SearchOptions.Replacements.Replacement'));
SET @newSettingNameReplacement = QUOTE(CONCAT('Module.Components.Name.', @i, '.SearchOptions.Replacements.1.Replacement'));
解决方案
推荐阅读
- python - 在 Python 中使用 protoc 生成正确的导入
- selenium - 如何在 Selenium WebDriver 中处理弹出窗口
- cron - 如何安排 cron 作业在 NiFi 中每天凌晨 3 点运行
- delphi - 如何将行设置为只读 - DevExpress VCL TcxRTTIInspector
- typescript - 如何在打字稿的 for.. in.. 循环中提供类型?
- spring-boot - 如何调试 Spring Boot 处理程序映射问题
- javascript - KeyboardAvoidingView 在我的代码中不起作用-react native
- docusignapi - DocuSign 服务条款模式弹出代码给出跨站点脚本错误并且无法显示
- arrays - 过滤对象数组中的键
- java - java 类和对象没有正确的输出