SQL插入并返回自增字段

5

我是一名长期从事桌面应用程序C++编程的人,新接触SQL。我需要插入一个带有自增字段的表,并使该SQL语句返回自增字段的新值。

类似以下内容:

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

对于我这个技术新手,很抱歉。


2
你使用的是哪种数据库?SQL Server、MySQL等? - Adam Porad
5个回答

4

选择 scope_identity

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

详细信息点击此处


1
这是来自于:http://www.velocityreviews.com/forums/t303448-return-identity-after-sql-insert.html 吗?如果是的话,你应该提供一个链接。 - Tom Neyland

4
假设您正在使用SQL Server,您可以使用 scope_identity 函数来返回“在同一作用域内插入到自增列中的最后一个标识值。作用域是指一个模块:存储过程、触发器、函数或批处理。因此,如果两个语句位于同一存储过程、函数或批处理中,则它们在同一作用域内。”
INSERT INTO Entrys ('Name','Description') VALUES ('abc','xyz');
SELECT SCOPE_IDENTITY() 

4
在SQL Server中,您还可以在INSERT语句中使用OUTPUT子句:
INSERT INTO Entrys('Name', 'Description') 
OUTPUT Inserted.EntryID
VALUES ('abc','xyz') 

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


如果指定了多个VALUES元组,返回的ID是否保证与值元组相同的顺序? - JamesHoux

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

0

正如 @marc_s 在 SQL Server 中所说,在 PostgreSQL 中,您可以通过以下方式获得相同的行为:

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

当你插入多个元组并且想要每行生成的所有ID时,RETURNING也非常有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接