node-mssql事务插入 - 返回插入的id ..?

时间:2016-04-20 13:50:09

标签: javascript sql sql-server node.js node-mssql

我使用node-mssql 3.2.0并且我需要INSERT INTO一个表并返回插入记录的ID。

我可以成功使用sql.Transaction()来插入数据,但回调(request.query()transaction.commit())的唯一参数是:

const request = new sql.Request();
request.query('...', (err, recordset, affected) => {});

const transaction = new sql.Transaction();
transaction.commit((err) => {});

因为recordsetundefinedINSERT语句UPDATEDELETE,而affected是我受影响的行数案例1

有人知道使用transaction.commit() node-mssql之后获取插入记录ID(只是主键ID)的好方法吗?

1 个答案:

答案 0 :(得分:9)

您可以添加INSERT INTO...语句,而不只是执行SELECT...语句:

INSERT INTO table (...) VALUES (...); SELECT SCOPE_IDENTITY() AS id;

SCOPE_IDENTITY()函数返回插入的标识列,这意味着recordset现在包含id

const request = new sql.Request();
request.query('...', (err, recordset, affected) => {});

我不认为request.multiple = true;是必需的,因为虽然这包含多个语句,但只有其中一个是SELECT...,因此返回。

所以答案是SQL相关的,并不是node-mssql特有的。