加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql学习MySQL生产库Insert了2次同样的记录但是主键ID是不一样

发布时间:2020-12-12 02:32:28 所属栏目:MySql教程 来源:网络整理
导读:《Mysql学习MySQL生产库Insert了2次同样的记录但是主键ID是不一样的问题的分析过程》要点: 本文介绍了Mysql学习MySQL生产库Insert了2次同样的记录但是主键ID是不一样的问题的分析过程,希望对您有用。如果有疑问,可以联系我们。 Email里面收到朋友laopan的

《Mysql学习MySQL生产库Insert了2次同样的记录但是主键ID是不一样的问题的分析过程》要点:
本文介绍了Mysql学习MySQL生产库Insert了2次同样的记录但是主键ID是不一样的问题的分析过程,希望对您有用。如果有疑问,可以联系我们。

Email里面收到朋友laopan的求助MYSQL学习

laopan:
insert into HudsonResult(JobID,EnvironmentID,FirstSessionID,RerunSessionID,State,Desp,OtherInfo) values
((select ID from Hudson where Stream='A7510_R52_Integration' and State='N' and pakName='needCompile' and User='jinhaiz'),'N','smoke_test','')
如果相同的记录不存在就执行上面这条insert命令,防止执行是insert两次.
这个语句该怎么写?MYSQL学习

能明白不?
现在有个问题便是insert了2次同样的记录但是主键ID是不一样的.MYSQL学习

me :
如果是mysql数据库的话:MYSQL学习

1 如果你表中有唯一健的话,可以通过这个唯一健来进行赛选的.
2 如果没有唯一健的话,你必要有判断数据是否重复的条件,根据这个条件先select出来,看是否存在,如果不存在就insert,如果存在要么覆盖要么就忽略掉不执行,这个过程必要多条sql语句,最好开启事务来进行控制.MYSQL学习

Mysql中有一个replace以及Insert into ..... on duplicate key update 来判断对重复数据进行insert或者update的,但是这是依据主健或者唯一健来判断的.你可以参考下下面这篇文章(/article/47090.htm).


laopan:
1.唯一键怎么筛选?现在的问题是唯一的不同是key不一样,其余列都是一样的.MYSQL学习

me :
把表结构发给我,我看看,通过执行 命令? show create table HudsonResult;? 可以得出表结构.
如果没有唯一健的话,就不能从sql层面去判断数据的唯一性,否则资源消耗太大了.必要从应用角度数据来源角度去验证过滤.MYSQL学习

laopan:MYSQL学习

mysql> show create table HudsonResult;
+--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table??????? | Create Table??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
+--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| HudsonResult | CREATE TABLE `HudsonResult` (
? `JobID` int(32) NOT NULL,
? `EnvironmentID` int(32) NOT NULL,
? `FirstSessionID` varchar(100) default NULL,
? `RerunSessionID` varchar(100) default NULL,
? `State` varchar(5) default NULL,
? `ID` int(32) NOT NULL auto_increment,
? `Desp` varchar(100) default NULL,
? `ExecNum` int(32) default NULL,
? `FailNum` int(32) default NULL,
? `ATCStartTime` datetime default NULL,
? `ATCEndTime` datetime default NULL,
? `FocNumBefore` int(32) default '0',
? `FocNumAfter` int(32) default '0',
? `Priority` int(32) default '0',
? `FocDesp` varchar(5000) default '',
? `OtherInfo` varchar(100) default NULL,
? PRIMARY KEY? (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=14910 DEFAULT CHARSET=latin1 |
+--------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)MYSQL学习

现在的问题配景是这样的,网页上insert后,电脑卡了一下,这个时候还没有返回,又点了一下,变成又insert了一次,导致2条记录
内容是一样的,但是主键是不一样的,java你也做过,有没有啥想法,避免这个?MYSQL学习

ME :
把提交按钮做下处理,很简单的,提交一次后,按纽设置为灰色的,操作者点击不了,只有等待提交处理结果出来继续进行下一步操作.MYSQL学习

laopan:MYSQL学习

搞定了,呵呵,简单易用哈,考虑多了,谢啦.MYSQL学习

总结:可见有很多时候差错数据都是由于应用的bug导致的,清理数据的同时要从根源处理问题,数据层面的sql能不动尽量不要动.MYSQL学习

《Mysql学习MySQL生产库Insert了2次同样的记录但是主键ID是不一样的问题的分析过程》是否对您有启发,欢迎查看更多与《Mysql学习MySQL生产库Insert了2次同样的记录但是主键ID是不一样的问题的分析过程》相关教程,学精学透。编程之家PHP学院为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读