SQL 数据插入失败,自增ID被占用 2C

数据库有一个表ID使用的是自增长,数据插入失败自增ID会被暂用,这样数据的ID就不是连续的,有什么方法可以让数据ID连续

9个回答

定义GetMaxID()方法,每次插入就是GetMaxID()+1这样.

插入数据,不管失败或成功,数据库尝试生成一个ID,失败也是存在的,所以想连续不可能的

不要用id自增长,自己在插的时候获取最大的id。这样子有一个缺点,就是有点麻烦,而且还会影响程序速度

ZTZY520
antchow- 回复ouyangsixian: 这个没有涉及到改结构啊。在插数据之前加一重操作而已
2 年多之前 回复
ouyangsixian
风平-浪静 关键数据库的结构我们不能修改。
2 年多之前 回复

你好!要解决这个问题,需要在数据库中创建一个存储过程,在存储过程中先查出该表最后一条记录id,加1后作为本次新插入数据的id。很简单的。

ouyangsixian
风平-浪静 你这样就是要取消ID的自增长,但是表结构我们无法修改
2 年多之前 回复

使用同步外加取id最大值+1
实际上最好的方法是UUID而不是自增主键

oracle建议使用sequence,mysql有自增主键属性

丢掉“洪荒级”老师教你的单机单用户设计思想,应该从多用户环境来看待问题。
id不保证连续才是最合理的。

要解决这样的问题,需要在数据库中创建一个存储过程,在存储过程中先查出该表最后一条记录id,加1后作为本次新插入数据的id。很简单的。
存储过程(简单){
获取最后一个ID
}
insert into xxpp(ID) values(存储过程+1)

数据插入失败自增ID会被暂用,用事物回滚可以吗?这样数据库就没有修改,其他情况类似,自定义异常,如果某个条件下发生此异常就回滚,不知道您是不是这个
意思呢。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
如何插入自增id
数据表中已设为自增。rn[code=php]rn//insert_arr(表名,字段名,插入值) ---》得到数组插入到数据库中 rn//rnpublic function insert_arr($tab_name,$tab_filed="",$insert_arr)rn rnrn[/code]rn是全字段插入还是选择字段问题。rnif(省略)rn 当一个表有10几个字段的时候,这样做感觉省略了好多,但是面对自增ID的字段如何给值。rn 后期修改了表结构的时候,字段的排序或者增加字段,代码肯定报错,这样恐怕不行。rnelsern 一个表10几个字段都要写,后期应对表修改的时候不会出现问题,是不是我太懒了。。。。rnrn
自增ID被重置
通过“alter table_name AUTO_INCREMENT=10000; ”设置了自增ID从10000开始,正常情况下能够从10000开始,使用中发现出现如下异常:rn当数据库没有数据的情况下,重新启动数据库服务,就会导致自增ID恢复到了从默认的1开始,而不是10000开始。也不能接到上一次插入的ID值继续。rn只有当数据库有数据的时候,重新启动服务不会有影响。rn求助这个问题应该怎么办?
tp5获取插入的数据的自增id
tp5: insertGetId方法新增数据并返回主键值使用getLastInsID方法: Db::name('user')->insert($data);  $userId = Db::name('user')->getLastInsID(); // 使用insertGetId方法 Db::name('user')->insertGetId($data);
返回自增Id,循环插入关联数据
declare @id int INSERT INTO Fotomall_Product_Category(categoryName, parentId, categoryNote,categoryLevel) values (@categoryName, @parentId,@categoryNote,@categoryLevel); set @id=SCOPE_IDENTITY();if(@i
mybatis插入自增主键ID的数据后返回自增的ID
开发中碰到用户注册的功能需要用到用户ID,但是用户ID是数据库自增生成的,这种情况上网查询后使用下面的方式配置mybatis的insert语句可以解决  <insert id="insert" keyProperty="id" useGeneratedKeys="true" parameterType="com.kdchain.credit.domain.LotteryGoods">...
得到mysql插入的自增id
3. 通过SQL select LAST_INSERT_ID() [java] view plain copy Statement stmt = null;   ResultSet rs = null;   try {       stmt = conn.createStatement();       // ...       // 省略建表       // ...    
获取mybatis插入自增id
<insert id="insertPersonManage" keyProperty="id" useGeneratedKeys="true"> insert into organization_manager_info( orgId, appointStatus, empId, mantPeriod, isOrgRight, isOrgInde...
ibatis插入获取自增id
[code="java"] insert into t_project_adjunct(fadjunct,ftype,fcreater,fcreatetime,fdeleted) values(#name#,1,#creater#,sysdate(),0) SELECT @@IDENTITY AS ID [/code]主要是 [code="java"] ...
sql 实现 Id自增
create table TimeAxisStage(Id int Identity(1,1))
sql的自增ID语法
请问一下sql的自增ID语法
插入一条id自增记录返回自增后的id
INSERT INTO opr (               )         VALUES (              )                      SELECT             LAST_INSERT_ID() AS id
oracle表的id自增sql
oracle 数据库建表id自增的sql语句创建sequence的名称,S_out_gold这个为
sql查询生成自增ID
SELECT *,[color=#FF0000]identity(1,1)[/color] FROM [rnselect u.username,k.userid,u.bmid,sum(个人总得分) as 个人级别总得分, u.jbid from rn(select u.username,k.userid,u.bmid,b.hname,个人总得分,k.regtime,u.jbid rnfrom(select k.userid,u.username,u.bmid,b.hname,sum(k.fen)+j.hfen AS 个人总得分,k.regtime,u.jbid rnfrom userkq k,userp u,jb j,bm b where k.userid=u.id and u.jbid=j.id and u.bmid=b.id group by k.userid,k.regtime,j.hfen,u.username,u.bmid,b.hname,u.jbid) order by 个人总得分 desc) group by u.bmid,k.userid,u.username ,u.jbid]. AS [%$##@_Alias] rnrn就是想得到一个新的表中有一个自增的ID.谢谢了
C# sql 获取自增Id
我的业务逻辑是rn用sql远程开启数据库并实现了添加数据的功能!rnrn我的问题来了rn当sql远程开启数据库实现添加数据,rnrnrn问题一.....怎么获取sql当前自增ID 求原码rnrn问题二.....怎么把获取当前的ID 传给修改(Edit)的页面rnrn问题三....怎么获取Edit页面实现对当前ID的参数 进行修改rnrn谢谢 求原码
PL/SQL 数据表id自增
第一步 创建一个触发器  create or replace trigger HBHJ_AREANOISE_INSERT before insert on HBHJ_AREANOISEDATA for each row begin      select SEQ_HBHJ_AREANOISEDATA.NEXTVAL INTO :new.ID from dual; end;  第二步
求一个自增ID的sql
有两张表A B ,A比B多一个ID字段(非自增)rnrn想要执行以下语句的时候让ID自增,应该怎么写rnrninsert into Arnselect @ID,* from B
sql语句:设置id自增
问:已经建好的table,里边有主键Id,不是自增的,我向里边加了一些数据后,想把Id编程自增的,但之前的id编号不变,还要保存在里边,怎么设置id为自增呢?
sql循环 生成自增id
with p_x as ( select [id] ,[name] ,[classid] ,[orderid], ROW_NUMBER() OVER(Partition by classid order by orderid) as rowid FROM table ) select * from p_x with p_x ...
id自增???
我想不用触发器rn怎么实现在表的插入时,字段id的自增????
SQL server数据库的设置ID,当你插入一条数据时,ID自增
以sqlserver2008R2数据库为例。可以用如下方法: 1、先建表: 2、在图形界面,找到business表: 3、右键此表名,选择“设计”。 4、右侧出现的页面,找到要设置主键的列,ID列,然后右键,选择“设置主键”。 5、下面一步是要设置自增,在左侧列表中,右键“id列”,然后选择“属性”。 6、其中,找到“标识规范”,标识增量为每次增加多少,标识种子代表起始数值大小。 7、效...
MySQL数据库插入一条数据获得其自增的id
xml文件:service实现类:
关于插入多条数据时,设定ID字段自增的问题
如表tblA:rnrnID valuern123 AAArn124 BBBrn135 CCCrn158 DDDrnrn表tblBrnID valuernrn现在希望通过一个语句把tblA中的记录插入tblB中,要求tblB中的ID为指定的起始值(如70000),自增1.rn注意:tblB并没有把ID列设置为自动自增,需要用语句实现自增。rnrn希望得到的效果:rn表tblBrnID valuern70000 AAArn70001 BBBrn70002 CCCrn70003 DDDrnrnrnrn
请问:如何获得当前插入的数据的ID(自增)?
insert into TestTable (Age) Values (25) SELECT @@IDENTITY AS 'ID'rn提示:SQL语句的结束位置缺少分号(;) rn这条语句在SQL Server中执行没有问题rn请问为什么?应该如何改Access中是否有@@Identity
MyBatis返回插入记录的自增id
SELECT LAST_INSERT_ID() AS id insert into tableA (id, time, desc) values (#{id,jdbcType=INTEGER}, #{time,jdbcType=TIMESTAMP}, #{desc,jdbcType=VARCHAR}) 插入成功后,返回的id被保存在POJO对象TableA的id属性上,这是跟i
MyBatis插入记录获取自增的ID(MySQL)
如果想只用简单的查询语句查出刚刚插入的记录的自增ID,我们可能会想到select max(id) from table_name,但是,很明显这是不可取的,只要稍微有点并发,这就是个错误的结果。没错,使用LAST_INSERT_ID()就可以了。SELECT LAST_INSERT_ID()为什么可以,因为这个是基于connection的,每个数据库连接是相互独立的,在使用各种ORM框架操作数据库时
spring Jdbctemplate返回插入记录的自增Id
http://www.meiriyouke.net/?p=258   public int insertTable(LabelForm f) throws SQLException,ParseException { String content = f.getSiteId(); final String sql = "insert into TAG_INFO(SITE...
JdbcTemplate插入后获取自增ID
public int save(Model model) { logger.info("Start create a model:" + model.getName()); Map<String, Object> parmMap = new HashMap<String, Object>(); parmMap.put("name", m...
Mybatis 插入bean自增Id返回
useGeneratedKeys="true" keyProperty="ID"> 加上红色部分就OK了
oracle 插入ID自增遇到ORA-03113
      oracle 插入数据时,id自增,采用触发器方式,不知何原因,遇到ORA-03113,提示数据库连接断开,无法提交。 触发器代码 create or replace trigger autoIncreaseT before insert on IP for each row //IP为表名 when(new.id is null) begin select SEQ_glo...
如何获取刚插入的自增id,多线程.
String SQL = "Insert into club (name) values('name');select @@identity";rn以上sql语句在java代码中执行不了而在mysql中可一执行? 还请各位高手指点!
MyBatis单条插入后返回自增的id
insert into user(name,age) values(#{name},#{age}) useGeneratedKeys="true" keyProperty="id" 表示主键为id,且是自增的(注:只能是int类型才能自增,varchar的不行) package com.xxxx.xxx.mapper; @MapperScan public interface Xxx
如何获得新插入记录的id(自增)
rs远程脚本,调用服务器端javascript程序,如何得到新插入记录的id
MySQL在mybatis中返回插入的自增id
一、使用 useGeneratedKeys 参数 Mybatis 配置文件 useGeneratedKeys 参数只针对 insert 语句生效,默认为 false。当设置为 true 时,表示如果插入的表以自增列为主键,则允许 JDBC 支持自动生成主键,并可将自动生成的主键返回。 keyColumn:数据库表中的自增字段名。 keyProperty:数据库自增字段在pojo中的对应属性 ...
自增ID同时插入多个表
我有一个产品表.当我有数据插入时。生成一个自增的ID.而同时需要把这个ID插入到另外一张表中.请问这个该如何实现呢?
字段id自增插入 另一个表,急
insert into Crn(id,a,b,c)rnselect id自增字段,.....rnfrom table1 a,table2 brnwhere 条件..rn如:rn10,a,b,crn11,a,b,crnC表目前有数据,id 已经存在部分数值,rn我现在要做的是id自增字段=max(id)+1 的自增方式 把下面的数据插入到C表中rn请各位大大帮忙rn
创建视图时插入自增id
因为在实际工作中需要查询最大id,来求出总的数量,有时候由于数据的删除导致Max(id)求出的,与实际的数量是不符的,故想到用视图插入自增id来使Max(id)求出的即为总数。Create view view_MYAddId As select row_number() over (order by tb.id) as myAddId,* from (SELECT a.* FROM person a
数据库插入记录返回自增id
在mybatis 的映射文件中,设置两个属性。 例如: useGeneratedKeys="true" keyProperty="id"> insert into [order](gId,userId,buyNum) values(#{gId},#{userId},#{buyNum}) 在orcale中不支持自增。它是用序列来模拟自增的。 select EMPLOYE
MyBatis注解方式@Insert插入一条数据后获取自增id
使用注解:@Options(useGeneratedKeys=true,keyColumn=“id”) package mapper; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Opti...
获取插入表的自增ID问题
插入语句后跟上;strSql.Append(";set @ReturnValue= @@IDENTITY");  参数:new SqlParameter("@ReturnValue",SqlDbType.Int)}; parameters[7].Direction = ParameterDirection.Output; 在插入子表时获取返回ID,赋值给相关列  parameters2
JDBC插入成功返回当前自增ID
1:不用自增ID,直接用uuid不存在此问题 2:自增ID。mysql数据库 [code="java"] Class.forName("com.mysql.jdbc.Driver"); conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/testing","root","root"); System....
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池