举例:一张表,主键ID是int identity(1,1),同一时期多个用户向表中录入数据,我怎么把自己刚录入的找出来

解决方案 »

  1.   

    区别的是ID,其实我想要的就是新产生的ID,如果单用户,用max(ID)可以得到,多用户这样就不行了
      

  2.   

    用触发器+@@IDENTITY(或者IDENT_CURRENT) 可以搞定
      

  3.   

    使用@@IDENTITY,
    或使用解发器,inserted,deleted
    如select @ID=id from Inserted
      

  4.   

    如果多个用户几乎同时执行
    insert tabename values(……)
    select @id=@@IDENTITY 
    能保证我取到的@id是我刚才添加进去的那个吗?
    没有测试环境,所以,希望大家多指点
      

  5.   

    如何有表中有userOID就好办了
    select max(id) from t where userOID=登录记录人的OID
      

  6.   

    我也同意用 触发器 inserted表里面有数据
      

  7.   

    提议触发器的,可不可以详细点
    假如我在表上建了触发器,怎么把ID返回?
    select @ID=id from Inserted,在我的存储过程里能这样?
      

  8.   

    --------------------------- 
    如果多个用户几乎同时执行
    insert tabename values(……)
    select @id=@@IDENTITY 
    能保证我取到的@id是我刚才添加进去的那个吗?
    没有测试环境,所以,希望大家多指点
    -----------------------------如果你是一起提交的话,是可以保证的。
      

  9.   

    SQL Server2005很方便的得到,在SQL Server 2000中恐怕只要曲线救国了
      

  10.   

    猜你是要做什么得到最大的ID号编号,用触发器
    给你个例好,好好看看,很实用的CREATE         TRIGGER utrBrandList
    ON dbo.BrandList
    FOR INSERT
    AS
      DECLARE @intAutoID int  SET @intAutoID = ( SELECT TOP 1 AutoID FROM inserted )
      UPDATE dbo.BrandList SET BrandCode = ( SELECT ISNULL( MAX( BrandCode ), 0 ) + 1 FROM dbo.BrandList )
      WHERE ( AutoID = @intAutoID ) and ( ISNULL( BrandCode, 0 ) = 0 )