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

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

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;

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
MySQL 自增主键插入问题
MySQL数据库表中有自增主键ID,当用SQL插入语句中插入语句带有ID列值记录的时候就提示错误;是否可以让MySQL忽略SQL语句中的ID值只将其他列的值插入,让ID还是按照MySQL自增自己填呢?
mysql主键自增方法
1.ddl:     创建表时设置:     create table book(     id int auto_increment primary key ,     name varchar(20) ,     price int)   创建表后修改自增初始值:       alter table book auto_increment = 5 -- book ...
【记录】Mysql数据库更新主键自增
语法:id从1000开始自增: ALTER TABLE 表名 AUTO_INCREMENT = 1000;
请教一个MYSQL 主键自增的问题。
Hibernate 怎么设置自增的初始值,比如我想从10000开始. 或者说有人用过LIQUIBASE吗,怎么配置这个初始值
mysql 自增主键问题
mysql 自增主键只有在数据连续的情况下(1,2,3,4....n),性能最高吗?rnrn若中间的ID被删掉了呢(1,2,5,9,15....n),性能如何?
mysql主键与自增问题
我刚接触mysql,想问一下如何设置例如id为主键并且自增为1?
从刚刚插入的自增型主键表中获取主键
user表有如下列(userid,regtime,flag,loginname,powerstr,password,usertype,lasttime,secondpwd)rn数据库是sqlserver 2000。rn代码如下:rnConnection con = Conn.getConn();rn PreparedStatement ptmt = null;rn ResultSet rs = null;rn rn int userid = -1; //获取s_user中插入数据的自增型主键用户编号useridrn String sql ="insert into user(regtime,flag,loginname,powerstr,password,usertype,lasttime,secondpwd) values(?,?,?,?,?,?,?,?)";rn tryrn rn ptmt = con.prepareStatement(sql);rn ptmt.setString(1, regtime);rn ptmt.setInt(2, flag);rn ptmt.setString(3, loginname);rn ptmt.setString(4, powerstr);rn ptmt.setString(5, password);rn ptmt.setInt(6, userType);rn ptmt.setString(7, lasttime);rn ptmt.setString(8, secondpwd);rn rn if(ptmt.executeUpdate() > 0)rn rn ptmt = con.prepareStatement("Select @@identity as userid");rn //ptmt = con.prepareStatement(sql);rn rs = ptmt.executeQuery(); rn System.out.println("插入s_user表成功!!");rn rn if(rs.next())rn userid = rs.getInt("userid");rn System.out.println(userid);rn ; rn rn catch(SQLException e)rn e.printStackTrace();rn finallyrn tryrn ptmt.close();rn con.close();rn catch(SQLException e)rn e.printStackTrace();rn rn rn结果是那个userid输出是0,这应该是有问题的。小弟菜鸟,望各位大侠帮助。rn
主键自增与一个session插入多个表的冲突
框架环境:springboot + mybatis + mysqlrnmysql中的表,所有表的主键是自增的。现在出现一个问题,要同时插入主从表。从表要填入主表的主键。rn但是主表和从表是在同一个session中执行插入的。这样的话,没法在commit之前获取到主表的主键是什么,那样也就没法写入到从表中。rn
往ORACLE数据库中插入主键
 数据库中主键是唯一约束条件。同时可以设定不为空。   今天项目中碰到问题,就是往数据库中插入数据,但是没有设定主键值;这样就必须自己去做判断,主键要唯一。   自己给定一个方法去执行,就是用当前的时间去判断,获取小时甚至分秒都可以;这样主键肯定是唯一的了。   方法: function getOid(){ var today = new Date();//申明一个时间对象...
向一个表中插入记录的问题?
declare;rn v_vessionId number;rnbeginrn v_vessionId=10;rn insert into t_table1 select *,v_vessionId from t_table where (condition);rnend;rnrn这样的程序在oracle中好象不行,不过在sql server 中可以使用这样的程序,请高手指教。rn insert into t1 select *,@v_vessionId from t where (condition)rnrn谢谢指教。rn
一个向表中插入记录的问题?
我有一个表,table_ye,里面有字段(AA dec,BB dec)rn一个临时表,table_ls,里面有字段(AA dec)rn首先table_ye表中有一条记录(100,100)rntable_ls表中有若干条记录,将插入到table_ye表中。rn规律是:table_ye.AA=table_ls.AA rn table_ye.BB=上一条table_ye.BB + table_ls.AA rn不知道该怎样去写?rn
Mybatis插入空记录获得自增主键
在以下情景中: 有一个顾客表merhcant表和授权表oauth,在顾客注册的时候(此时没有顾客基本信息,只有注册账号密码信息),只会向oauth中插入数据,但是oauth表需要获得外键merhcant_id的值,也就是说必须先向merhcant表中插入一条空记录,并获得自增id,然后将该id作为oauth的外键插入到授权表oauth中 所以需要解决的问题时:在merhcant表中插入一条空记录
mybatis 插入含有自增主键的记录
1.自增主键属性 设置为null2.设置为原本属性名注意:千万不能不写 除非<inserrt id="insertauthor" parameterType="domain.....author"userGeneratedKeys="true" keyProperty="id">...
在后台怎么插入没有自增主键表
有张表它的主键是 char 类型的 rnrnstring.Format(insert into a_lj(nbxh(主键)) values(0),nbxh(变量));rnrn我是调用这个方法 要怎么写可以插入数据呢?
在mysql表中插入记录
alert('信息添加成功!');";rn mysql_free_result($insert);*/rn?>rnrnrn代码如上,为什么执行后总是显示不出来所插入的记录?rn求助??rn谢谢了!
mysql插入失败后自增主键的修改
mysql中如果一条数据插入失败,这时候id依然会增加。 这样就可能出现id不连续的情况。 为了消除这样的情况,可以直接删除id的那一列再重新设置自增 删除 alter table tablename dorp column id; 重新设置 alter table tablename add id int(11) not null primary key auto_increment firs...
mysql主键自增,有关自增的问题
当数据库表设置主键自增,添加语句中,将主键值设为0,执行语句。为什么可以成功执行。rnrn[img=https://img-bbs.csdn.net/upload/201711/21/1511257548_754823.png][/img]rn[img=https://img-bbs.csdn.net/upload/201711/21/1511257560_408915.png][/img]rn[img=https://img-bbs.csdn.net/upload/201711/21/1511257574_879855.png][/img]
如何将一个表中记录插入到另外一个表中?
假如我有一个表,名为"在职人员",另外一个表为"离开人员",两个表的主键都是"序号",表结构几乎完全一样,只是"离开人员"中多了两个字段,一是离开时间,二是操作员,如果一个人员离开,我要将全部信息转移到"离开人员"表中,然后填写离开时间和操作员.我想这样处理,看行不行:rn1、为保证操作正确,放到事务中完成,这样可以回滚,rn2、由于两个表的主键字段都一样,首先将"在职人员"的该记录序号换成一个不可能用到的序号,如-10,我的表序号全部从1开始.rn3、通过insert int语句将"在职人员"中该人的信息查询出来并添加到离开人员表中rn4、删除在职人员中的信息rn5、修改刚添加的记录的离开时间和操作员rn6、将主键-10改成大于0的唯一合法主键rn中间任何一个环节出错都可以回滚.rnrn接下来我的问题就出现了:rn1、能否省掉将主键转成-10这一步?因为在职人员表中该记录的主键可能和离开人员表中的已有主键一样,这样会冲突.rn2、insert into 离开人员 (姓名,性别……) (select * from 在职人员 where 序号=-10)中,要指定姓名、性别,而该字段又特别多,如果表结构一改变,工作量比较大,能否有一个通配符如*之类的?rn3、接上面的,还有类似的许多情况,都是将当前记录删除,添加到历年记录中,两个表的结构也仅是后一个表比前面一个表多两个字段而已,我想写成一个通用的储存过程,由应用程序传来表名,主键名,主键值就可以了.rn4、将一个表中一条记录移动到另外一个表中的最佳作法?我上面的办法好象比较笨,注意,表的结构是未知的,但都是后一表比前一表多两个字段.rn非常感谢,我已经想了很久了,想找到一个通用的做法,那就是写如下一个储存过程:rnCREATE PROCEDURE u_DelToHistory rn @strKeyField nvarchar(200),rn @nKeyValue int,rn @strTableName nvarchar(200),rn @strHistoryTableName nvarchar(200),rn @strReturn nvarchar(200) outrnASrn……rn由应用程序传来主键名、主键值、表名,该储存过程查询出主键对应的记录,然后在 历时记录表中插入该记录信息,并删除正式表中的信息,@strReturn 返回可能出现的错误会正确信息.谁能帮我实现一下,不胜感激.
mysql获取一个表中的下一个自增(id)值的方法
SELECT auto_increment FROM information_schema.`TABLES` WHERE TABLE_SCHEMA='my_db_name' AND TABLE_NAME='my_table_name';
mybatis 使用自增主键, 插入记录并返回自增主键 MySQL
mybatis 使用自增主键, 插入记录并返回自增主键 MySQL
求助,java插入oralce自增主键方法
求助,我在java开发中想做一个上传文件的功能,上传之后该文件的信息会被保存在数据库中,由于之前用的是mysql数据库,所以现在save的时候报错ID为null,我在oracle中建了自增序列,但是java中的方法不知道怎么写,如图我想要一个插入自增主键ID的方法,上面那个是我自增的序列,之前用mysqlz这样插入就行了现在oracle不知道咋改了。。本人菜鸟求大神们说详细点,拜谢!![图片说明](https://img-ask.csdn.net/upload/201708/19/1503116354_11201.jpg)rnrnrn昨天太晚了,提的问题一直不显示害的我图都没上囧,之前用mysqlz这样插入就行了现在oracle我的setID的地方怎么改呢?rnrn
mysql group_concat自增主键问题
在进行分组时,有时候需要将某一字段的值以逗号或其它符号拼接在一起,可以使用group_concat函数来完成,如果要拼的字段是字符型的,很好办,用group_concat(字段名 separator ",")就行. 今天在测试程序时,发现有问题,后来发现就是group_concat函数的问题,拼接的字段是主键ID,我设为自动增长,我使用 group_concat(oct(doId) separ...
往数据库中插入一行记录的方法
//往数据库中插入一行记录的方法(一点击“插入”按钮就执行)rnprivate void insertData() rn ……rn ……rn tryconIns.rs.moveToInsertRow();rn catch(Exception e)rn rnrn//提交方法(一点击“提交”按钮就执行)rnprivate void commitData()rn ……rn try rn conIns.rs.moveToCurrentRow();rn conIns.rs.insertRow(); /////总提示这一行有错误(这是第321行)rn //conIns.rs.moveToCurrentRow();rn conIns.rs.refreshRow();rn ……rn rn catch(Exception e)e.printStackTrace();rnrnrn---------------------------------------------------------------------rnconIns.rs.insertRow(); /////总提示这一行有错误rn大家帮小弟看看,我看了一天了,也没看明白。rnrnrn输出的异常如下:rnjava.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]行中有错误rn at sun.jdbc.odbc.JdbcOdbcResultSet.setPos(Unknown Source)rn at sun.jdbc.odbc.JdbcOdbcResultSet.insertRow(Unknown Source)rn at PersonnelRecordTable.commitData(PersonnelRecordTable.java:321)rn at PersonnelRecordTable.access$800(PersonnelRecordTable.java:16)rn ……rn ……rn ……rnrnrn
mybatis获取mysql插入的自增主键配置方法
使用selectKey的方式获取主键,相当于调用了MySql的LAST_INSERT_ID()函数,意思是查询最后一次插入的ID,相当于执行了两条语句。 具体方法:改*mapper.xml文件的如下位置:(验证过有效) 另外一种方式参考如下图: 两种方式的主键获取方式都是通过MyBatis为我们自动将id值赋值给传入的javaBean,而不是通过update语句返回,也就是u
关于MySQL返回插入的自增主键的几种方法
本文主要讲解一下插入数据之后如何获取自增主键的方法: 1.通过SELECT LAST_INSERT_ID(),结果如下:   LAST_INSERT_ID()   2817   这个方法有一个弊端:如果你在插入数据的时候,别人刚好删除了你刚删除的数据,那么你虽然能获取到这个主键,但是没有任何意义了   如果此时又有人同时插入一条数据,那么获取到的将是别人刚插入进去的那条数据的ID
mysql自增主键
MariaDB [test]> create table test1(id int primary key auto_increment,name varchar(20))auto_increment=1; #id为自增主键,默认从1开始递增 Query OK, 0 rows affected (0.07 sec)MariaDB [test]> insert into t
mysql 设置自增主键
通过show create table 查看结果如下: 发现‘id’字段并非主键,现在需要把其设置为主键且自增,语句如下: alter table xun1 drop id; alter table xun1 add id int(6) not null primary key auto_increment first; 其中 first 是把该字段放到第一个字段的意思。结果如下:
MySQL主键的自增
MySQL中的主键必须设置自增属性吗? 答案是 “No” 主键不一定自增,但自增的一定要是主键。相反:设置自增属性的列必须是主键 或者加UNIQUE索引 主键是有唯一性的 即不可以重复输入相同的值 还有一点:主键不能重复,一个表中只能有一个主键。...
MySql主键的自增
在Mysql里怎样使主键自动的增加,
MySQL设置主键自增
遇到要设置自增主键的问题,手头上没有书,网上百度的百度知道的几个回答全都不行,最后谷歌了一发,第一个页面里的第二个方法就解决了。这里把方法记录下来,以防之后忘记了。     对于一个已经是主键的字段(以id为例),若想将其设为自增主键,只需要很简单的一句SQL语句。 ALTER TABLE `database`.`table` CHANGE COLUMN `id` `id` INT(11) N
mysql 主键自增
ERROR 1049 (42000): Unknown database 'user' mysql> alter table user modify Id integer auto_increment; Query OK, 0 rows affected (0.06 sec) Records: 0  Duplicates: 0  Warnings: 0 mysql> alter t
delphi中插入一个表的同时,更新其它的表的问题
有什么方案完成。rn比如我有一个调拨表和一个商品表rn调拨表(调拨单好,原始仓库,目标仓库,商品编号,调拨数量)rn商品表(商品编号,现存数量)rn从原始仓库到目标仓库调拨某商品数量,同时要把调拨数量加到目标仓库现存数量中;同时原始仓库中的现存数量减去这些调拨数量。rnrn
mysql设置自增主键
alter table t1 change column id id int not null primary key auto_increment;
自增ID同时插入多个表
我有一个产品表.当我有数据插入时。生成一个自增的ID.而同时需要把这个ID插入到另外一张表中.请问这个该如何实现呢?
请问怎样写代码往一个表中插入一个字段??
请问怎样写代码往一个表中插入一个字段??
插入一个表的同时更新其他表
比如有一个主表和一个明细表(入库单主表、入库单明细表),操作这两个表的同时要更新一个商品表,rn入库单(入库单编号、入库仓库编号)rn入库单明细(入库单编号、商品编号、入库数量)rn根据入库仓库编号、商品编号把入库单的入库数量加到商品表的现存数量。rn方案一:我想在afterpost中编写,但要分几种情况(插入、删除、修改)rn方案二:afterinsert、afterdelete、afteredit中编写rn能否给出代码举例说明。
PostgreSQL主键自增方法
PG主键自增,方式跟oracle类似 1、首先创建序列 CREATE SEQUENCE test_c_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; [size=14px;] [/size] [size=14px;][size=14px;][size...
三层,往一个数据表的数据插入记录
刚学习三层架构,rn服务器: TADODataSet、TDataSetProviderrn客户端: TClientDataSet、TDBGrid、TDataSourcernrn在往一个数据表的数据插入操作中,如果出现异常(如插入重复值等),下次在没有关闭客户端的情况下再插入其它记录时,保存无反应。哪位大侠有没遇过这种情况?帮帮忙,谢谢!!!
请教大家一个往数据表中插入记录的问题。
往数据库中插入数据的时候,不应该是一行一行的追加吗,为什么有的表在执行完插入操作之后,插入的数据却在第一行显示?
同时向一个表添加记录的问题??????????????????
我建了两个结构相同的表,A表和B表,A表是总表,B表是临时表,记录添加时先存在B表中,在B表保存后,再添加到A表(总表)中,现在出现一个问题,当两个人同时向B表中添加记录时,后一个人会把第一个人添加的记录冲掉,也就是说不能两个人同时向B表中添加记录,这个问题如何解决,请高人指点!
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法