id通过序列来递增
CREATE SEQUENCE SafeResult_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;
当我插入一条记录并返回它的id,sql该怎么写呢?
17 个解决方案
#1
好像很难,除非主键时自己实现的自增方法,每次取最大的记录号+1
#2
我也要问这个问题!
#3
友情帮你顶一哈..
#4
在DAO中把记录插入数据库前,ID应该是空的吧?
#5
通过序列获取ID后,把它作为参数传出来不就行了吗?
#6
#7
用bookmark标记当前位置,重新查询之后返回这个bookmark再获取ID
#8
TO: jiangsheng(蒋晟.MSMVP2004Jan)
bookmark是什么?
bookmark是什么?
#9
提个思路,很早以前这么做的,做法不规范,正在整理那时候的文档,郁闷死了:)
(1)数据库中增加一个主键表,保存所有表将要插入新记录的新主键值,该表的记录数是确定的
(2)对每个表编写基本DAO
(3)写一个专门的静态方法,通过PrimaryKeyDAO读写主键表,放在工具集合类中
(4)在每个DAO的insert方法中通过工具集合类的方法读取和更新主键表(或者任何其他合适的地方),当然可以返回这个PK
当时的目的是为了剥离数据库功能和生成复杂主键,代码写的相当“临时”,没有严格按照上面的思路和DAO规范写,拿出来会被笑死的,就不献丑了:)
(1)数据库中增加一个主键表,保存所有表将要插入新记录的新主键值,该表的记录数是确定的
(2)对每个表编写基本DAO
(3)写一个专门的静态方法,通过PrimaryKeyDAO读写主键表,放在工具集合类中
(4)在每个DAO的insert方法中通过工具集合类的方法读取和更新主键表(或者任何其他合适的地方),当然可以返回这个PK
当时的目的是为了剥离数据库功能和生成复杂主键,代码写的相当“临时”,没有严格按照上面的思路和DAO规范写,拿出来会被笑死的,就不献丑了:)
#10
mssql中插入完成以后,立即用SELECT ISNULL(@@IDENTITY,-1) AS [identity] 其他数据库就不知道了, 好象在jdbc3中,可以直接通过返回的值取得resultset.getGeneratedKeys()
#11
bookmark是recordset的属性
#12
TO: jiangsheng(蒋晟.MSMVP2004Jan)
jdbc有这属性吗?
jdbc有这属性吗?
#13
up
#14
很简单,你插完记录在查一下序列就可以了。
#15
TO: bixuehui(bxh)
在jdbc中怎么查序列?
在jdbc中怎么查序列?
#16
up!
#17
比如序列名称是aaa:
select aaa.nextval id from dual
select aaa.nextval id from dual
#1
好像很难,除非主键时自己实现的自增方法,每次取最大的记录号+1
#2
我也要问这个问题!
#3
友情帮你顶一哈..
#4
在DAO中把记录插入数据库前,ID应该是空的吧?
#5
通过序列获取ID后,把它作为参数传出来不就行了吗?
#6
#7
用bookmark标记当前位置,重新查询之后返回这个bookmark再获取ID
#8
TO: jiangsheng(蒋晟.MSMVP2004Jan)
bookmark是什么?
bookmark是什么?
#9
提个思路,很早以前这么做的,做法不规范,正在整理那时候的文档,郁闷死了:)
(1)数据库中增加一个主键表,保存所有表将要插入新记录的新主键值,该表的记录数是确定的
(2)对每个表编写基本DAO
(3)写一个专门的静态方法,通过PrimaryKeyDAO读写主键表,放在工具集合类中
(4)在每个DAO的insert方法中通过工具集合类的方法读取和更新主键表(或者任何其他合适的地方),当然可以返回这个PK
当时的目的是为了剥离数据库功能和生成复杂主键,代码写的相当“临时”,没有严格按照上面的思路和DAO规范写,拿出来会被笑死的,就不献丑了:)
(1)数据库中增加一个主键表,保存所有表将要插入新记录的新主键值,该表的记录数是确定的
(2)对每个表编写基本DAO
(3)写一个专门的静态方法,通过PrimaryKeyDAO读写主键表,放在工具集合类中
(4)在每个DAO的insert方法中通过工具集合类的方法读取和更新主键表(或者任何其他合适的地方),当然可以返回这个PK
当时的目的是为了剥离数据库功能和生成复杂主键,代码写的相当“临时”,没有严格按照上面的思路和DAO规范写,拿出来会被笑死的,就不献丑了:)
#10
mssql中插入完成以后,立即用SELECT ISNULL(@@IDENTITY,-1) AS [identity] 其他数据库就不知道了, 好象在jdbc3中,可以直接通过返回的值取得resultset.getGeneratedKeys()
#11
bookmark是recordset的属性
#12
TO: jiangsheng(蒋晟.MSMVP2004Jan)
jdbc有这属性吗?
jdbc有这属性吗?
#13
up
#14
很简单,你插完记录在查一下序列就可以了。
#15
TO: bixuehui(bxh)
在jdbc中怎么查序列?
在jdbc中怎么查序列?
#16
up!
#17
比如序列名称是aaa:
select aaa.nextval id from dual
select aaa.nextval id from dual