在每次要添加记录之前使用
sql : select MAX(id) id from table
获取当前的ID最大值。将得到的值 +1 ,作为新插入记录的ID。问题:当服务器新启动时,我插入一个数据,假设ID = 20,然后我将该数据删除。再插入,数据库内的ID却 = 21.
查询数据库时,发现 ID =20 的记录确实以被删除。
反复做增加删除操作 ID一直递增,并不像预期的那样,每次获取最大值+1。请大家帮我分析下问题出现哪里?
由于数据库设计,对ID字段并不能使用sequence属性
如何实现我的预期逻辑
sql : select MAX(id) id from table
获取当前的ID最大值。将得到的值 +1 ,作为新插入记录的ID。问题:当服务器新启动时,我插入一个数据,假设ID = 20,然后我将该数据删除。再插入,数据库内的ID却 = 21.
查询数据库时,发现 ID =20 的记录确实以被删除。
反复做增加删除操作 ID一直递增,并不像预期的那样,每次获取最大值+1。请大家帮我分析下问题出现哪里?
由于数据库设计,对ID字段并不能使用sequence属性
如何实现我的预期逻辑
解决方案 »
- oracle sql 不用distinst,查询时如何去掉重复数据
- 游标错误纠正
- 关于亿级别的数据查询架构的急救(mysql,oracle,文件索引)
- 区的分配机制
- 有关SQLLDR导入大数值数据的精度问题
- 读“oracle8初学者指南”关于索引的基本问题!谢谢
- 怎样向过程传递SQL语句?
- 访问PRODUCT_USER_PROFILE时错误:未载入产品用户配置文件信息;
- ora-01041错误,采用Delphi的BDE或Ado连接错误,在线等待,提供解决方法,有分!
- 触发器错误!!ORA-04091:表..发生了变化,触发器/函数不能读,---在线等待!!
- 如何用PL/SQL建表并插入数据???
- 导入导出问题
如果是在同一个session里面的话,先删除再插入是不会有问题的。
但是如果不在同一session里面,删除之后就必须要先commit后再插入,否则插入的时候读到还是删除前的最大值。