我想在表中插入新记录时获得新创建的ID.

我读到:http://msdn.microsoft.com/en-us/library/ms177564.aspx,但它需要创建临时表.

我想在执行INSERT语句后返回ID(假设只执行一个INSERT).

例子:

1     Joe      Joe
2     Michael  Mike
3     Zoe      Zoe

执行INSERT语句时,我想返回创建的ID,即4.

你能告诉我如何使用SQL语句来实现这一点吗?否则这是不可能的?

推荐答案

如果SQL Server表的列类型为INT IDENTITY(或BIGINT IDENTITY),则可以使用以下方法获取最新插入的值:

INSERT INTO dbo.YourTable(columns....)
   VALUES(..........)

SELECT SCOPE_IDENTITY()

只要没有插入另一行,它就可以工作——它只返回在此范围内发出的最后IDENTITY个值.

至少还有两个选项——@@IDENTITYIDENT_CURRENT——阅读更多关于它们如何工作以及它们在这excellent blog post by Pinal Dave here个选项中的不同之处(可能会给你意想不到的结果).

Sql相关问答推荐

在postgresql中使用来自另一个字段的日期名称作为JSONB查询中的关键字

如何查询一个名称是根据PL/pgSQL函数结果构建的表?

如何从多行数据中获取一行合并数据?

更新PostgreSQL 15中的JSON值

如何为该查询编写正确分区依据

如何为缺少的类别添加行

如何解决错误;ORA-00911:无效字符;在果朗?

SQL:使用年/月/日分区查询某个时间段的数据

Snowflake 中的分层数据

SAS proc freq 或 proc sql 获取数据子集和整个数据的频率

统计重复记录的总数

将时间戳四舍五入到最近 10 分钟的查询

如何解释 SQL Server 中的 Foxpro 语法?

使用长 IN 子句的 SQL 优化

SQL:无重复项的两个聚合函数

比使用NOT EXISTS更高效的SQL删除方法是什么?

Oracle函数中无法动态迭代创建的SYS_REFCURSOR

使用 PL/PGSQL 函数 Select 返回多条记录

计算 SQL 中的总体成功率:递归 CTE 还是替代方法?

SELECT 用于 Parent、Children 和 ORDER BY [Order] 列