我可以不可以在添加一条数据时,先得到这个待添加数据的主键ID? 
能作到吗,怎么做呢

解决方案 »

  1.   

    根据编码规则构造一个出来就可以了
    在插入语句前写:
    declare @PriID varchar(10)
    select @PriId =构造的规则insert into tablename(主键)values(@PriId)
      

  2.   

    IDENT_CURRENT
    返回为任何会话和任何作用域中的指定表最后生成的标识值。 语法
    IDENT_CURRENT('table_name')参数
    table_name是将要返回其标识值的表的名称。table_name 的数据类型为 varchar,没有默认值。返回类型
    sql_variant注释
    IDENT_CURRENT 类似于 Microsoft® SQL Server™ 2000 标识函数 SCOPE_IDENTITY 和 @@IDENTITY。这三个函数都返回最后生成的标识值。但是,它们在定义"最后"的作用域和会话上不同。 IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。
    @@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。
    SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值。 
      

  3.   


    --獲取PUBS數據庫中, JOBS表的下一個JOB_ID值(JOB_ID是標識列)
    use pubs
    go
    select Next_job_id=ident_current('jobs')+ident_incr('jobs')--result
    Next_job_id                              
    ---------------------------------------- 
    15(1 row(s) affected)
      

  4.   

    如果表中沒有identity()列, 則出錯