使用SQL Server插入记录后获取自动增量值

时间:2009-12-08 06:16:07

标签: sql-server auto-increment

我正在使用连接到SQL Server数据库的VB.NET开发一个项目

在这个项目中,我需要在插入记录后获取名为“ID”的列的值 数据库立即。

感谢名单。

6 个答案:

答案 0 :(得分:4)

答案 1 :(得分:4)

CREATE TABLE dbo.SomeTable (
     ID int IDENTITY
    ,[NAME] varchar(50)
    );
go

INSERT INTO dbo.SomeTable ([Name])
SELECT 'Joe' UNION
SELECT 'Jim' UNION
SELECT 'JIll'
;

SELECT  ident_current('dbo.SomeTable') AS [LastID_1]
        ,@@IDENTITY AS [LastID_2]
        ,scope_identity() AS [LastID_3]
;   

用途:

  • ident_current ('TableName')表示特定的表格,不受范围和会话的限制
  • @@IDENTITY当前会话中的最后一个ID
  • scope_identity()当前会话中的最后一个ID,当前范围

答案 2 :(得分:0)

INSERT
    INTO [News]
    (
        LanguageID,
        Title,
        Short,
        [Full],
        Published,
        AllowComments,
        CreatedOn
    )
    VALUES
    (
        @LanguageID,
        @Title,
        @Short,
        @Full,
        @Published,
        @AllowComments,
        @CreatedOn
    )

    set @NewsID=@@identity

答案 3 :(得分:0)

SCOPE_IDENTITY,IDENT_CURRENT和@@ IDENTITY是类似的函数,因为它们返回插入到标识列中的值。

答案 4 :(得分:0)

EMPID ( AUTOINCREAMENT)
NAME VARCHAR(50)

INSERT INTO TABLE ( NAME) VALUES ('RAMKUMAR')
SELECT @@IDENTITY

使用@@identity 返回自动增量值

答案 5 :(得分:0)

您可以创建临时表变量并创建一个名为 StuId 的列。

--Student table creation
CREATE TABLE [dbo].[StuTable](
    [StuId] [int] IDENTITY(1,1) NOT NULL,
    [StuName] [nvarchar](50) NOT NULL,
    [DOB] [date] NULL
)

DECLARE @TempTable TABLE(StuId INT)

INSERT INTO [dbo].[StuTable]([StuName]
                            ,[DOB])
OUTPUT inserted.StuId INTO @TempTable
VALUES ('Peter', '1979-01-01')

SELECT StuId FROM @TempTable --Get the auto increment Id