2 a9805943 a9805943 于 2016.03.13 21:50 提问

mysql插入数据时失败但是主键id自动增加了一该如何解决

插入时因重复导致插入失败会导致id自增,第二次插入其它数据时会在会变成id加了两次的情况

7个回答

zhangzehai2234
zhangzehai2234   2016.03.13 22:11
已采纳

配置一下事务,如果出现异常情况则数据库进行回滚

a9805943
a9805943 我配置好了事务回滚,可是回滚后主键还是会加上去
2 年多之前 回复
a9805943
a9805943 我先去学习下事务的用法尝试一下
2 年多之前 回复
qq_19648001
qq_19648001   2016.03.13 22:01

1.在保存前要有数据的正确性校验处理
2.插入数据操作改成存储过程,检查是否有重复

Marksinoberg
Marksinoberg   Ds   Rxr 2016.03.14 07:54

建议使用事务来进行持久化的处理,这样可能就不会出错了。希望对你有用图片说明

Royal_lr
Royal_lr   Ds   Rxr 2016.03.14 11:10

自增是这样的,,如果失败回自动加一,,但数据不会插入

hou_weiyi
hou_weiyi   2016.03.14 16:58

可以支持回滚,的把数据库类型设置为InnoDB

u010319440
u010319440   2016.03.13 21:53

重复是指别的字段重复了是吧

deltatang
deltatang   2016.03.14 14:51

自己实现主键生成器。不用系统自带的:)

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
MySql获取插入记录自增主键ID值
现在这种场景偏多,获取的方式也很多。像MyBatis和Hibernate都有方式去获取该值。现在简单讲讲MyBatis是获取插入记录自增主键ID值的。public class Stu { private int id; private String name; public int getId() { return id; } public v
mybatis获取插入数据时自动生成的主键id
mapper文件: void insert(Map params); mybatis的xml如下: insert into tbl_sales_shop_claim(shopID, empID, status, expireTime, actionEmpID, actionEmpName, actionTime, createTime) values(#{shop
向MYSQL数据库的表中插入有自动加一主键的数值
昨天晚上没搞成,早上起来搞定了!原来的表中ACCOUNT中 ID  不是自动增加的,别人注册账户的时候需要制定ID,这个是很不好的,所以把ID设定为自动加一,用户不用管ID,只注册登记其他的信息,所以修改MYSQL。mysql> ALTER TABLE `database`.`table` MODIFY COLUMN `id` INTEGER AUTO_INCREMENT; 然后实现程序中的增加,
MySql insert一条数据时使用自增主键,并在返回对象中给ID赋值
[转载自] http://www.cnblogs.com/panxuejun/p/6180506.html 1.在Mybatis Mapper文件中添加属性“useGeneratedKeys”和“keyProperty”,其中keyProperty是Java对象的属性名,而不是表格的字段名。 2.Mybatis执行完插入语句后,自动将自增长值赋值给对象systemBean的属性id。因
THINKPHP如何在添加数据的时候获取主键id的值
在使用ThinkPHP新增数据后可以很方便的获取自动增长型的主键值。  $Model = D(‘Blog’); $data['name'] = ’test’; $data['title'] = ’测试标题’; $data['content'] = ’测试内容’; $result = $Model->add($data); if ($result){    $id = $result;
mysql自动增长后插入数据
mysql数据库表设置为id自动增长后,插入数据的sql语句。指定id错误:INSERT INTO test VALUES(test);这样的形式会产生错误,信息大致说数据列不够。Column count doesnt match value count at row 1如果,自己填写id也可以,如下:INSERT INTO test (id, name) VALUES(1,test
mybatis+mysql返回插入值后的主键id
第一步:     在Mybatis Mapper文件中添加属性“useGeneratedKeys”和“keyProperty”,其中keyProperty是Java对象的属性名!     insert into leave_message_tbl (content, createdate, userid) values (#{content,jdbcTy
Mysql如何指定新插入的数据的起始自增主键id
mysql 主键 自增 起始值
MySQL数据表中怎么给已经有主键自增的表加入数据
MySQL数据库表中有自增主键ID,当用SQL插入语句中插入语句带有ID列值记录的时候; 如果指定了该列的值,则新插入的值不能和已有的值重复,而且必须大于其中最大的一个值;也可以不指定该列的值,只将其他列的值插入,让ID还是按照MySQL自增自己填; 具体: 1.创建数据库 create table if not exists userInfo ( id int PRIMARY KEY
insert插入数据怎么让id自增长
1.首先创建一个序列发生器SEQUENCE,例如名字为s_ag_resource_attr: -- Create sequence create sequence s_ag_resource_attr minvalue 1 maxvalue 9999999999999999 start with 1346 increment by 1 cache 20; 2.比如要更改表名为a