代码之家  ›  专栏  ›  技术社区  ›  Andy

插入时是否有更好的方法来检索唯一ID?

  •  1
  • Andy  · 技术社区  · 16 年前

    我正在使用下面的SQL Server语句插入记录并一次性返回唯一的auto inc id值。想知道有没有一种更简单/更快/更好的方法?

    SET NOCOUNT ON;
    
    DECLARE @res table (ID bigint);
    
    INSERT INTO [Titles] ([Name],[Timestamp],[Title])
    OUTPUT INSERTED.ID INTO @res
    VALUES ('Name','23 aug 2010','this is a title');
    
    SELECT [ID] FROM @res;
    

    UPD: 最适合我的解决方案是:

    INSERT INTO [TestCase] ([Name],[Tags],[Timestamp],[Title])
    OUTPUT INSERTED.*
    VALUES ('Hello',0x22324423,'23 aug 2010','this is a title');
    

    代码生成非常友好。您可以通过反射轻松地为任何数据结构生成这些语句。也可以很好地替代 Linq2SQL Dataset.InsertOnSubmit() 。

    3 回复  |  直到 16 年前
        1
  •  2
  •   AaronM    16 年前

    更简单:

    INSERT INTO [Titles] ([Name],[Timestamp],[Title]) 
    OUTPUT INSERTED.ID VALUES ('Name','23 aug 2010','this is a title'); 
    

    http://msdn.microsoft.com/en-us/library/ms177564.aspx

        2
  •  0
  •   bashmohandes    16 年前

    这是使用@@Identity的示例

    INSERT INTO Production.Location (Name, CostRate, Availability, ModifiedDate)
    VALUES ('Damaged Goods', 5, 2.5, GETDATE());
    GO
    SELECT @@IDENTITY AS 'Identity';
    

    有关详细信息,请检查 here

        3
  •  0
  •   Community Mohan Dere    9 年前

    使用scope_identity()而不是@@identity。

    另见答案 this question .

    推荐文章