我使用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) => {});
因为recordset
,undefined
和INSERT
语句UPDATE
为DELETE
,而affected
是我受影响的行数案例1
。
有人知道使用transaction.commit()
node-mssql
之后获取插入记录ID(只是主键ID)的好方法吗?
答案 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
特有的。