遇到一mysql触发器的离奇现象,求解!

gesnpt 2008-09-27 05:16:07
我有一个叫product的表,为这个表建了一个触发器,触发器如下(略有改动):
DELIMITER $$

CREATE
TRIGGER `productTrigger` AFTER INSERT ON `product`
FOR EACH ROW BEGIN
declare bookingtime varchar(15);
declare firstcomma int(2);
declare secondcomma int(2);
declare tmp varchar(500);
declare newcontent varchar(500);
declare i int(2) DEFAULT 1;
declare tmpIndex int(2);
declare param varchar(50);
declare judge BOOLEAN DEFAULT true;
declare required0 varchar(10);
declare required1 varchar(10);
declare codebaseCount int(1) DEFAULT 0;
set newcontent = concat(new.content,'&');
set firstcomma = LOCATE(',', newcontent);
set secondcomma = LOCATE(',', newcontent, firstcomma+1);

if firstcomma > 0 and secondcomma >0 then
set bookingtime = SUBSTRING(newcontent, 1, firstcomma-1);
set tmp = SUBSTRING(newcontent, secondcomma+1);
while (i>1 or judge) do

set tmpIndex = LOCATE('&', tmp, i);
set param = SUBSTRING(tmp, i, tmpIndex-i);
if(LOCATE('required0=',param)>0) then
set required0 = SUBSTRING(param, LOCATE('=',param)+1);
elseif(LOCATE('required1=',param)>0) then
set required1 = SUBSTRING(param, LOCATE('=',param)+1);
end if;
set i = tmpIndex+1;
set judge = false;
end while;

if length(required0)>0 then
select count(*) into codebaseCount from test where `required0`=required0;
if codebaseCount = 1 then
insert into infonew (`required0`,`required1`,`TIMESTAMP`) values (required0,required1,bookingtime);
end if;
end if;
end if;
END;
$$

DELIMITER ;

只要是对字段进行一些字符串的拆分,然后将拆分内容插入到另外的一个表里。
现在的情况是,我一旦建立了这个trigger,product表的数据会被不停的重复插入,注意是product表,不是infonew这个表,而且是mysql自己在不停的插入,哪位神仙遇到过这种情况呀!
...全文
141 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gesnpt 2008-10-26
  • 打赏
  • 举报
回复
现在看应该不是mysql的问题,貌似是log4j向mysql数据库插入数据的时候有bug

gesnpt 2008-09-28
  • 打赏
  • 举报
回复
现在看好像是每次向product表插一条数据,就会将之前插入的数据重新都再插一次,会在短时间内就插入product表几百万的数据,很夸张。
难道有一条数据插入失败会导致mysql重复插入吗?
WWWWA 2008-09-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gesnpt 的回复:]
现在看好像是每次向product表插一条数据,就会将之前插入的数据重新都再插一次,会在短时间内就插入product表几百万的数据,很夸张。
难道有一条数据插入失败会导致mysql重复插入吗?
[/Quote]
应该不会,而且MYSQL触发器不能对同表进行操作,应该是触发了其它表的触发器吧
WWWWA 2008-09-28
  • 打赏
  • 举报
回复
没有遇到过此问题,infonew 是否有触发器,表间关系?
denniswwh 2008-09-27
  • 打赏
  • 举报
回复
mysql的bug?插入的数据都一样?
内容概要:本文详细介绍了“考虑N-1故障集的电力系统安全约束经济调度(SCED)”的Matlab代码实现方案,聚焦于电力系统在满足N-1安全准则(即任一元件故障后系统仍能安全运行)条件下的经济性与安全性协同优化问题。资源通过构建精确的数学优化模型,在兼顾发电成本最小化的同时,确保系统在故障前后的运行安全性,涵盖潮流约束、机组出力限制及故障后安全恢复等多重约束条件。文中提供了完整的Matlab仿真代码,并集成YALMIP工具包进行高效求解,支持高水平学术研究的模型复现与结果验证,尤其适用于EI期刊、博士论文等科研场景。此外,资源附带详细的网盘链接,便于获取YALMIP开发包及其他配套材料,极大提升了科研复现效率。; 适合人群:具备电力系统分析、优化建模理论基础,熟悉Matlab编程语言,正在从事电力系统经济调度、安全稳定分析、新能源接入影响研究等相关方向的研究生、高校科研人员及电力行业工程技术开发者。; 使用场景及目标:① 深入学习并复现N-1安全约束下的SCED建模方法;② 掌握基于YALMIP与Matlab的优化问题建模与求解流程;③ 支撑高水平学术论文(如EI、SCI、博士论文)的仿真验证与结果再现;④ 为含高比例新能源接入的现代电力系统安全经济运行研究提供可扩展的技术框架与代码基础。; 阅读建议:建议结合文中提供的百度网盘资源与公众号“荔枝科研社”的配套资料,按照推荐目录顺序系统学习,重点关注模型构建的数学逻辑与代码实现细节,动手调试参数并尝试引入新能源不确定性、多故障场景(N-k)或分布鲁棒优化等前沿方向以拓展研究深度。

57,064

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧