MySQL主键自增问题,一个方法同时往一个表中插入记录 10C

方法一插入完,执行方法二,此时方法二包主键冲突。方法二和方法一处在不同事务中

0

1个回答

如果是用主键primary或者唯一索引unique区分了记录的唯一性(如果没有唯一索引,ignore无从忽略,主键自增并不会有完全重复的两条数据),避免重复插入记录可以使用:
代码如下:
INSERT IGNORE INTO table_name (email, phone, user_id) VALUES ('test9@163.com', '99999', '9999');
这样当有重复记录就会忽略,执行后返回数字0
还有个应用就是复制表,避免重复记录:
代码如下:
INSERT IGNORE INTO table_1 (name) SELECT name FROM table_2;

1
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
MySQL数据表中怎么给已经有主键自增的表加入数据
MySQL数据库表中有自增主键ID,当用SQL插入语句中插入语句带有ID列值记录的时候; 如果指定了该列的值,则新插入的值不能和已有的值重复,而且必须大于其中最大的一个值;也可以不指定该列的值,只将其他列的值插入,让ID还是按照MySQL自增自己填; 具体: 1.创建数据库 create table if not exists userInfo ( id int PRIMARY KEY
Mysql-基本练习(05-插入、查询所有记录、主键、主键自增)
1.插入记录语法:INSERT [INTO] tb_name [(col_name,……)] VALUES(val,……);INSERT INTO user(username,age,salary) VALUES('笑笑','18',10000.00);2.查询记录语法:SELECT expr,…… FROM tb_name;SELECT * FROM user;3.建表时添加主键约束(主键约束的...
向有自增长主键的表插入数据
在测试过程中,我们会遇到在测试过程中需要在数据库中造数据来配合测试,一般来说表都会有唯一主键,并且有时候主键是自增长的,这时候我们插入数据的方法与没有自增长主键时的方法略微不同,可以用使用以下两种方式来实现。 方式一、 如果指定了该列的值,则新插入的值不和已有的值重复,而且必须大于其中最大的一个值 INSERT INTO test_orders VALUES(14, 'jd2018051...
MyBatis(三) 解决设置数据库自增后,导致两表关联插入的数据不匹配问题
最近在做关联数据插入的时候,遇到一个问题,先描述一下我遇到的问题: 有三张表:商品表:goods(id,name,price) 订单表:payment(id,payment_date,count) 关系表:relation(id,goods_id,p...
Mysql如果有多个写库,ID又是自增的,ID冲突怎么搞?
Mysql如果有多个写库,ID又是自增的,ID冲突怎么搞? http://www.oschina.net/question/1182150_2141804?sort=time
mysql的骚操作:自增长的字段同时插入到另一个字段
如题 1 insert into users(username,password) values((select auto_increment from information_schema.tables where table_schema ='mytest' and table_name='users'),'123456' ); 2 3 select * from inf...
mysql删除一个表后,下次再插入的时候,自增列会在原来基础上继续增加
delete from table1; 通过: truncate table table1;使新的表的自增列从1开始计数  
mysql生成一条A表数据的同时得到这条数据的自增ID
INSERT INTO pf_mission (title,createTime,status) values (#{title},now(),1) 注:此法传入的参数只能是一个对象,在数据库生成自增Id后马上将此Id赋值给参数对象,即给该对象setId(自增的id) 因之前想在生成一条A表数据的同时立刻给B表生成一条数据,并且将A数据的自增Id赋值给B表的一个字段,整个想法错误,
有自增列时往里面添加批量字段,插入不进去的处理方法
先写一行 SET IDENTITY_INSERT 表名 ON 然后就可以忽视自增列这一限制 插入完数据记得关闭   SET IDENTITY_INSERT 表名 OFF
mysql存储过程(循环插入),获取自增主键作为外键插入其他表
#定义存储过程delimiter //DROP PROCEDURE IF EXISTS  pro_addaccount;##hosp_name医院名称,num_limit循环产生多少账号CREATE PROCEDURE pro_addaccount(in hosp_name VARCHAR(50),in num_limit int)BEGINDECLARE i int default 1;DECL...
MySQL数据表中有自增长主键时如何插入数据
MySQL数据库表中有自增主键ID,当用SQL插入语句中插入语句带有ID列值记录的时候; 如果指定了该列的值,则新插入的值不能和已有的值重复,而且必须大于其中最大的一个值; 也可以不指定该列的值,只将其他列的值插入,让ID还是按照MySQL自增自己填; 具体:1.创建数据库 create table if not exists userInfo ( id int PRIMARY KEY AUTO_I
表中有自增长主键时,插入数据的方法
数据库的表中有自增长主键时(如图所示),我们该怎么插入数据呢?方式一:    当需要插入的数据比较少时,即可以通过一条一条的插入时,我们可以指定该列(id)的值,但是新插入的值不能和已有的值重复,而且必须大于其中最大的一个值方式二:    当需要插入的数据量比较大时,需要时通过储存过程或者其他方式来批量生成数据插入时,显然方式一的方法不可行。那现在又该怎么办呢?    有两种解决方法:    1)...
Mybatis中添加一条数据的同时返回自增主键ID
"在Mybatis中,添加一条数据的同时返回其自增主键ID值" 方法:在mapper.xml文件中进行配置keyProperty属性. [code="java"] insert into user(userName,password) values(#{userName},#{password}) [/code] ps:userGeneratedKeys="true"(...
MySQL自增主键删除后插入新记录主键重复问题
这是我同事的一个朋友遇到的问题,标题可能有些拗口,我重现下场景: 设置一张MySQL表,表里有一个自增主键ID,往表里插入数据,假如插入数据之后表最后一行的ID是100,我先删除这条ID为100的记录,然后重新启动服务器,按理说如果再往这个表里插入新的记录,新纪录的ID将为101,对吧?估计大家都是这么想的,但是,结果是:如果你的表类型是InnoDB,那么,新纪录的ID为100;如果你的表类
数据库高并发插入数据导致的主键冲突问题解决
现代系统都是数据驱动的业务系统,所有的系统都离不开数据,我们现在存储的大部分还是通过关系型数据库来存储的,因为关系型数据库的锁可以保证数据的一致性,所以我们大部分的数据会持久化到数据库中,但是往往数据计算过程比较复杂,都是经过各个应用计算之后的数据,直接操作还不是很方便,所以我们的数据都是通过应用存储到数据库中的,那么问题来了,假如系统高并发运行,同时又两条数据同时执行insert会出现什么,后执...
一张表里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把mysql重启,再insert一条记录,这条记录的ID是18还是15 ?
一般情况下,我们创建的表的类型是InnoDB,如果新增一条记录(不重启mysql的情况下),这条记录的id是18;但是如果重启(文中提到的)MySQL的话,这条记录的ID是15。因为InnoDB表只把自增主键的最大ID记录到内存中,所以重启数据库或者对表OPTIMIZE操作,都会使最大ID丢失。         但是,如果我们使用表的类型是MylSAM,那么这条记录的ID就是18。因为MylSAM...
mysql高并发下主键冲突
事情是这样的,博主刚刚写完一个小项目,由于使用的量比较大,所以做了一下压测,在插入数据的时候报出了如下错误 :[http-bio-****-exec-67] DEBUG c.j.m.a.d.A.insertAppUser!selectKey - ==> Parameters: org.springframework.dao.DuplicateKeyException: ### Error u...
mysql数据插入失败,插入成功后主键跳过自增
昨天在调试一个业务代码中,无意间发现了一个问题。数据入库后的主键不是连续自增的,主键键值没过几秒就从两千多直接跳到了五千上下。这是为什么?瞬间引起我的注意。先简单说明下环境。Mysql版本:5.6.23。为了防止某些数据重复,数据库中对某些字段设置了唯一索引,即unique key。经确认此表也只有一个业务程序在操作。那么,问题就定位到主键的auto_in...
MySQL数据库插入一条数据获得其自增的id
xml文件:service实现类:
MySQL 自增长主键 在删除数据后依然接着删除的数据增长
如题,比如有主键为1,2,3的三条数据,删除2,3两条数据后再新增数据,主键是从4开始的。原因是主键是唯一的,绝对不能出现重复。比如有100条数据,主键为1到100,删除了主键为50的数据之后,还剩99条数据,这个时候再新增数据,主键是要从101开始,而不是第100条数据的100,不然会重复,有两个主键为100的数据。不过可以手动修改。1,删除原有主键:ALTER TABLE `table_nam...
事务内 获取自增id
问题: 在service中 spring开了事务,在事务中插入一条记录,然后需要用到自增的id,但是获取不到,   情景:     A 表   id  name                 B 表   id  Aid createtim                 B表的aid 是 A 表的id                  在一个事务中,先新增A表记录,再新增B表记录;向A表新增记录...
MySQL - 数据插入与主键冲突
【1】主键冲突在插入数据的时候,有时候会遇到主键(唯一键)冲突的情况。下面讲述两种解决办法:① 更新原数据insert into 表名[(字段列表:包含主键)] values(值列表) on duplicate key update 字段 = 新值。示例如下 :insert into p_user (id,name,age,sex) VALUES(1,'luco',13,'b1y') -- 如果主
MyBatis操作mysql配置和获取插入记录的自增主键
MyBatis操作mysql配置和获取插入记录的自增主键 我们知道MySql中主键可以设成auto_increment,也就是自增主键,每当新增一条记录,主键值自动加1。 在MyBatis中,执行insert,返回值为受影响的语句行数,此操作跟JDBC一致。 但是如果应用中需要将插入的值的主键返回时,这时有两种方式: 第一种方式:在mapper的inser
MySQL联合主键自增分别产生递增id
比如员工表,要在部门内递增生成编号 ,例如    t_user表        dept          user_no_name --------------------------------------        财务部         财务部001       研发部         研发部001       财务部        财务部002       财务部  ...
MySQL获取自增主键ID的四种方法
1. SELECT MAX(id) FROM tablename; 2. LAST_INSERT_ID() 函数 LAST_INSERT_ID 是与table无关的,与你最近一个插入数据的表有关。如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID会改变。 在多用户交替插入数据的情况下MAX(id)显然不能用。这时就该使用LAST_INSERT
获取mysql 自增id 和mysql 下一个自增id的方法
mysql获取表中自增id的方法: 1. 使用 select MAX(id) from tablename; 获取的是表中最大的id;顺序执行  insert ---> delete 插入的数据----> select MAX(id) from tablename; 获取到的是 insert 之前的最大id;  2. SELECT LAST_INSERT_ID(); 获取到的是
实体类中有主键,数据库中主键是自增的,使用linq插入记录时,由于实体类有数据产生报错的解决方法
使用 LINQ , 向数据库中插入一条数据。 会报出 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'RoleInfo' 中的标识列插入显式值。 原因是因为在数据库表中,有标识列,而标识列又不允许修改。所以会报出这个错误。。 解决方法是: 在类的字段中,为声明的字段加上 isDBGenerated=true; 如[Column(isPrimaryKey = true, Name
sql 查询一个表的数据插入到别一个表,ID自动增长
select * from xmsbmx select p_kmmc from dbo.receive_ysn_bb_cz_yssr insert into xmsbmx(prjname) select p_kmmc from dbo.receive_ysn_bb_cz_yssr
java实现向主键id自增的表中插入数据
问题 想要向mysql数据库中插入一条记录,因为设计的表时自动递增的,那么如果插入多条记录,每次都要设置主键的话工作量会很大,而且难免会有重复的主键,这时候就要使用强大的主键自增的功能了。 在没有使用主键自增时的代码是这样子的 String insertSQL = "insert into user_t values(1, 'zzz', 'aaa', 20);"; stateme...
mysql应用过程中出现的主键重复的问题
在使用SSM框架时,插入记录的操作,出现了这样的问题 Duplicate entry '0' for key 'PRIMARY' 出现这个问题的原因是:主键的重复所引起的 在Navicat for MySQL中 1、选择你要操作的这张表; 2、单击右键,选择:’设计表‘; 3、设置自动增长,就行了 ...
mysql向表同时插入多条记录
INSERT INTO table_name (field1, field2,...fieldN) VALUES (valueA1,valueA2,...valueAN),(valueB1,valueB2,...valueBN),(valueC1,valueC2,...valueCN)......; mysql> desc test; +-------+----------...
MySql 使用foreach标签 批量插入list中数据,主键自增,插入
方法一       INSERT INTO TStudent(name,age) VALUES(#{item.name}, #{item.age})   方法二    INSERT INTO TStudent(name,age)VALUES     (#{item.name}, #{item.age})   使用方法二时:
mybatis 实现插入一条记录的同时,并返回主键自增策略是自增生成的主键ID
<insert id="insert" parameterType="com.mmall.pojo.Shipping" useGeneratedKeys="true" keyProperty="id"> insert into mmall_shipping (id, user_id, receiver_name, receiver_phone, receiver_...
存储过程同时新增两张表,并将第一张表的主键插入第二张表当中
SQL Server 中,可以使用 SCOPE_IDENTITY()、 @@IDENTITY 、 IDENT_CURRENT() 来取得最后插入记录的值值,它们的区别在于:SCOPE_IDENTITY() 返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。一个作用域就是一个模块--存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,
关于MySQL返回插入的自增主键的几种方法
本文主要讲解一下插入数据之后如何获取自增主键的方法: 1.通过SELECT LAST_INSERT_ID(),结果如下:   LAST_INSERT_ID()   2817   这个方法有一个弊端:如果你在插入数据的时候,别人刚好删除了你刚删除的数据,那么你虽然能获取到这个主键,但是没有任何意义了   如果此时又有人同时插入一条数据,那么获取到的将是别人刚插入进去的那条数据的ID
给MySql表格添加一个自动增长的主键列
曾经给某个Mysql表格添加主键时,用了以下SQL语句 alter table `表格名` add column `列名` int not null auto_increment comment '主键' before `某一列名`; 结果遇到如下两个错误 :   Error Code : 1064 You have an error in your SQL synta
mysql8基础 insert 表中含有自动增长的字段,插入数据时用null或default
       OS : Ubuntu 18.04.1 LTS        DBMS : mysql 8.0.12        blog : blog.csdn.net/shiwanwu  typesetting : Markdown   数据,数据,命根就在数据 ! 操作数据库时,一定要谨慎小心。师...
给表添加记录时,在mapper.xml中配置sql,需要添加主键值的写法
SELECT SEQUENCE_1.NEXTVAL FROM DUAL insert into SFY_BUILD BUILD_ID, BUILD_PROJ_NAME, BUILD_CONS_STAGE, BRANCH_OFFICE, TOTAL_UNIT, BRANCH_UNIT, SUPERVISOR_UNIT,
MySQl 数据库已有数据的表添加自增 ID?
数据库导入数据后发现没有自增 id,因此就有了上面这个问题。 解决方法 1、给某一张表先增加一个字段,这里我们就以 node_table 这张表来举例,在数据库命令行输入下面指令 : alter table node_table add id int 2、更改 id 字段属性为自增属性,在数据库命令行输入下面指令 : alter table `node_table` change id id i...
让mySQl的自增id从1开始的方法
在清空MySQL数据库中的表的记录后,重新插入数据时自增id不是从1开始,要想在插入数据时id从1开始,用的truncate语句,该语句的作用是清空表中的数据,包括自增主键id。代码如下: spell为表名,truncate table (表名); 即可解决该问题。
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java写一个值班表 java设计一个值班表