在向主表添加一条记录时,想先获取该记录的唯一ID,因为需要先完成其他相关表数据的添加,主表ID用什么方式获取比较好呢?

解决方案 »

  1.   

    最简单的是设置ID为自增长。获取的时候使用SCOPE_IDENTITY()
      

  2.   

    我之前用的是guid,不知大家有什么更好的解决方案
      

  3.   


    --SQLSERVER
    insert into tb output inserted.ID values(.....)
    --inserted.ID 返回的ID 前台接收就可以了
      

  4.   

    Perfor per = new Perfor();
    per.PerforId = Guid.NewGuid();
    //新增方法
    User user = new User();
    user.userId = Guid.NewGuid();
    user.perId = per.PerforId;//关联id
    //新增方法 
    这样不就ok了?
      

  5.   

    id设置为自增长,添加记录前获取最大id然后加1
      

  6.   

    是否可以放在一个事务中。BeginTransaction
    insert into tb output inserted.ID values(.....);select @@IDENTITY  --执行得到ID
    得到ID后的处理,。
    EndTransaction
      

  7.   

    不设自增长,不用Guid,那就要你自己管理这个ID的生成嘛,还能有什么办法呢?自己管理ID的生成,你必须得有个地方记录当前最大的ID是多少,每次插入前要获取这个最大的ID + 1,执行成功之后还要把新的最大ID更新回去。
      

  8.   

    INSERT INTO table(column1) VALUES(value1);SELECT @@IDENTITY;
      

  9.   

    LZ的思路有问题,你应该先添加,然后获得最后一条记录ID(就是刚才添加的),根据获得Id修改(就是其他操作)