4

我正在使用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) => {});

在我的情况下,for和语句也是如此,并且recordset是受影响的行数。undefinedINSERTUPDATEDELETEaffected1

有谁知道在transaction.commit()using node-mssql.. 之后获取插入记录 id(只是主键 id)的好方法?

4

1 回答 1

11

除了做一个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;是必需的,因为虽然这包括多个语句,但其中只有一个是 a SELECT...,因此返回。

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

于 2016-04-22T14:37:24.520 回答