2009-12-30 37 views
4

我是一个很长时间的桌面应用程序新的SQL程序员。我需要插入带有autoincrment字段的表格,并让该sql语句返回autoincrement字段的新值。SQL INSERT INTO返回自动增量字段

类似:

INSERT INTO Entrys ('Name','Description') 
VALUES ('abc','xyz') 
SELECT Entrys.EntryID WHERE EntryID=[THE ONE JUST INSERTED!] 

对不起,我是一个菜鸟。

+2

你正在使用什么数据库? SQL Server,MySQL等? – 2009-12-30 04:03:30

回答

3

选择SCOPE_IDENTITY

insert into table values ('string value');select scope_identity() 

详细here

+1

是来自:http://www.velocityreviews.com/forums/t303448-return-identity-after-sql-insert.html?如果是这样,你应该提供一个链接。 – 2009-12-30 03:52:37

2

假设你正在使用SQL Server,你可以使用scope_identity返回“插入在同一范围内的标识列的最后一个标识值。一个范围是一个模块:存储过程,触发器,函数或批处理。因此,如果两个语句处于相同的存储过程,函数或批处理中,它们处于相同范围内。“

INSERT INTO Entrys ('Name','Description') VALUES ('abc','xyz'); 
SELECT SCOPE_IDENTITY() 
3

在MySQL中,你可以使用LAST_INSERT_ID()

2

在SQL Server中,您还可以使用INSERT语句中OUTPUT子句:

INSERT INTO Entrys('Name', 'Description') 
OUTPUT Inserted.EntryID 
VALUES ('abc','xyz') 

这将输出新创建的IDENTITY字段值。

0

至于@marc_s说,对于SQL Server,PostgreSQL中可以得到具有相同的行为:

INSERT INTO Entrys ('Name','Description') 
VALUES ('abc','xyz') 
RETURNING EntryID; 

RETURNING也是非常有用的,当你插入若干元组,并希望所有为每个生成的ID的行。