SQL INSERT INTO返回自动增量字段

时间:2009-12-30 03:47:24

标签: sql auto-increment

我是SQL新手的长期桌面应用程序C ++程序员。我需要插入一个带有autoincrment字段的表,并让该sql语句返回autoincrement字段的新值。

喜欢的东西:

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

抱歉是个菜鸟。

5 个答案:

答案 0 :(得分:3)

选择scope_identity

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

详情here

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:2)

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

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

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

答案 4 :(得分:0)

正如@marc_s对SQL Server所说,在PostgreSQL中,您可以使用以下方法获得相同的行为:

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

当您插入多个元组并且希望为每个行生成所有ID时,RETURNING也非常有用。