You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Azure Functions SQL扩展返回插入行的标识值

解决方案:返回Azure SQL插入行的标识ID

针对你的场景,有两种可靠的方式获取插入行的标识ID并返回给客户端:

方法1:修改SQL输出绑定,执行带返回的插入语句

默认的表名输出绑定(commandText设为表名)只会执行插入,但无法返回标识ID。你可以把commandText改成包含插入逻辑和返回标识的SQL语句,用SCOPE_IDENTITY()替代@@IDENTITY(前者仅返回当前会话当前作用域生成的标识,避免触发器等干扰)。

步骤:

  1. 更新function.json中的输出绑定配置:
{
  "name": "insertResult",
  "type": "sql",
  "direction": "out",
  "commandText": "INSERT INTO [dbo].[MYTABLE] (Col1, Col2) VALUES (@Col1, @Col2); SELECT SCOPE_IDENTITY() AS InsertedId;",
  "commandType": "Text",
  "connectionStringSetting": "YourConnectionStringSetting"
}
  1. 在JavaScript函数代码中,将请求参数映射到SQL参数,并获取返回的标识ID:
module.exports = async function (context, req) {
    // 从请求体获取要插入的数据
    const data = req.body;
    // 设置SQL参数
    context.bindings.insertResult = {
        Col1: data.col1,
        Col2: data.col2
    };
    // 执行完成后,获取返回的结果
    const insertedId = context.bindings.insertResult[0].InsertedId;
    // 返回给客户端
    context.res = {
        status: 201,
        body: { insertedId: insertedId }
    };
};

方法2:直接在函数代码中执行SQL操作(更灵活)

如果需要更精细的控制,可以跳过SQL输出绑定,直接用mssql库在代码中执行插入并获取标识ID:

步骤:

  1. 安装mssql依赖:
npm install mssql
  1. 在函数代码中编写逻辑:
const sql = require('mssql');
const config = {
    connectionString: process.env.YourConnectionStringSetting
};

module.exports = async function (context, req) {
    try {
        await sql.connect(config);
        const result = await sql.query`
            INSERT INTO [dbo].[MYTABLE] (Col1, Col2)
            VALUES (${req.body.col1}, ${req.body.col2});
            SELECT SCOPE_IDENTITY() AS InsertedId;
        `;
        const insertedId = result.recordset[0].InsertedId;
        context.res = {
            status: 201,
            body: { insertedId: insertedId }
        };
    } catch (err) {
        context.res = {
            status: 500,
            body: err.message
        };
    } finally {
        await sql.close();
    }
};

为什么之前的输入绑定方法无效?

输入绑定的执行时机是函数启动前,而你的插入操作是通过输出绑定在函数执行过程中完成的。当输入绑定查询@@IDENTITY时,插入还未发生,自然无法获取到正确的ID。

内容的提问来源于stack exchange,提问作者Jonas Mærsk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 21:10:52