怎么在java里给数据库插入一条新记录然后立刻取出此条记录的id(sqlserver).而不会取到几乎同时插入的别人的记录id

时间:2021-11-15 21:47:26
rt.不知道是不是用事务,也不知道是不是有很多表,都用事务,会不会影响性能
高手请支招

8 个解决方案

#1


SELECT @@IDENTITY AS 'Identity'

#2


但在sqlserver里能分一步进行吗.例如,insert和以上那句合在一起.得到的会是一个什么值,是我想要的id,还是影响的行数?

#3


刚试了一下,两句合在一起得到的是1,也就是影响的行数.
希望能看清我的问题.我是说不要取到错误的数据,

#4


在MSSQL中,用select @@Identity 可以得到刚刚插入的记录数,前提必须是你这个表有自增长的列,它得到的是自增长列的值。

#5


唉,我表达不清?

#6


可能是我太笨了.我只是想知道这两句怎么一起执行,不要读到错数据.

#7


INSERT INTO " + tableName +
        "(id,info,name)" +
        " VALUES(?,?,?) SELECT SCOPE_IDENTITY() AS 'id'";
执行此语句
      ResultSet rs = null;
      rs = pstmt.executeQuery();
返回的是此记录的id值.

#8


JDBC3.0 可以获取自增长字段的值。
详情可搜索相关资料。

#1


SELECT @@IDENTITY AS 'Identity'

#2


但在sqlserver里能分一步进行吗.例如,insert和以上那句合在一起.得到的会是一个什么值,是我想要的id,还是影响的行数?

#3


刚试了一下,两句合在一起得到的是1,也就是影响的行数.
希望能看清我的问题.我是说不要取到错误的数据,

#4


在MSSQL中,用select @@Identity 可以得到刚刚插入的记录数,前提必须是你这个表有自增长的列,它得到的是自增长列的值。

#5


唉,我表达不清?

#6


可能是我太笨了.我只是想知道这两句怎么一起执行,不要读到错数据.

#7


INSERT INTO " + tableName +
        "(id,info,name)" +
        " VALUES(?,?,?) SELECT SCOPE_IDENTITY() AS 'id'";
执行此语句
      ResultSet rs = null;
      rs = pstmt.executeQuery();
返回的是此记录的id值.

#8


JDBC3.0 可以获取自增长字段的值。
详情可搜索相关资料。