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

Ste*_*ast 4 javascript sql sql-server node.js node-mssql

我正在使用node-mssql3.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) => {});
Run Code Online (Sandbox Code Playgroud)

所以,recordsetundefinedINSERT,UPDATEDELETE语句,并affected为受影响的行数,在我的情况1.

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

Ste*_*ast 9

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

INSERT INTO table (...) VALUES (...); SELECT SCOPE_IDENTITY() AS id;
Run Code Online (Sandbox Code Playgroud)

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

const request = new sql.Request();
request.query('...', (err, recordset, affected) => {});
Run Code Online (Sandbox Code Playgroud)

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

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