【发布时间】:2010-12-24 07:27:43
【问题描述】:
我正在使用连接到 SQL Server 数据库的 VB.NET 开发一个项目
在这个项目中,我需要在插入一条记录后获取名为“ID”的列的值 立即数据库。
谢谢。
【问题讨论】:
-
您如何将信息保存到数据库中。能否提供代码示例?
-
您使用什么作为 DAL? ADO/LINQ/等。
我正在使用连接到 SQL Server 数据库的 VB.NET 开发一个项目
在这个项目中,我需要在插入一条记录后获取名为“ID”的列的值 立即数据库。
谢谢。
【问题讨论】:
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 当前会话中的最后一个 IDscope_identity() 当前会话中的最后一个 ID,当前范围【讨论】:
【讨论】:
INSERT
INTO [News]
(
LanguageID,
Title,
Short,
[Full],
Published,
AllowComments,
CreatedOn
)
VALUES
(
@LanguageID,
@Title,
@Short,
@Full,
@Published,
@AllowComments,
@CreatedOn
)
set @NewsID=@@identity
【讨论】:
SCOPE_IDENTITY、IDENT_CURRENT 和@@IDENTITY 是相似的函数,因为它们返回的值插入到标识列中。
【讨论】:
EMPID ( AUTOINCREAMENT)
NAME VARCHAR(50)
INSERT INTO TABLE ( NAME) VALUES ('RAMKUMAR')
SELECT @@IDENTITY
使用@@identity
返回自增值
【讨论】:
您可以创建临时表变量并创建一个名为 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
【讨论】: