一个Oracle表有字段:ID、Name、Description,其中ID是个自增的字段,我要执行下面这个SQL语句后,获得加入记录的ID值,请问如何实现?谢谢
insert into SecurityIdentity (Name,IdentityType) values ('test1','UserAccount')

解决方案 »

  1.   

    select max(ID) from table 啊!
      

  2.   

    我不想执行了Insert后,用Select的SQL语句来获得。有没有什么方法可以不用再进行一次查询才能获得这个ID(这个ID不是表中记录的行号)。
      

  3.   

    首先select max(ID) from table这个在目前的测试环境中就通不过,如在这之前表中有一些记录,ID值已经到了5000之后,而1000之前的记录已经被删掉了,现在我加入记录后,ID又从头开始了,如我加入了一条记录,它的ID值是53。(ID是数据库自动生成的)
      

  4.   

    难道我只能用Select,再查询一次吗?
      

  5.   

    select top 1 id from table order by desc
    降序查询 获得首记录
      

  6.   

    haisenmai(我应该做得到):你的这个方法跟取max没有区别呀
    注意:我不想再次人为控制的执行SQL语句
      

  7.   

    强烈建议使用存储过程create proc ist @Name char(9),@IdentityType char(9)
    as 
    declare @SID   int   
                select  @SID=MAX(strid)  from SecurityIdentity
    if (@SID is null)
    select   @SID=1001
    else 
    select  @SID=@SID+1
    insert into SecurityIdentity values (@SID,'test1','UserAccount')
    go
    调用就可以直接 
    exec  ist 'test1','UserAccount'如何 ??
      

  8.   

    呵呵,总觉得各位没有明白我的意思,这个ID是自动产生的,我要做的是:加入一条记录后,获得该记录的ID值,而这个ID不是MAX。