我正在进行Mongodb与SQL Server之间的集成,使用计划的mssql
软件包通过计划的过程将MongoDb的寄存器插入和更新到SQL Server数据库,并使用该软件包来实现此目的。
每次插入新寄存器时,我都希望检索回新的行ID,因为我需要它来执行子寄存器的另一次插入。
我尝试了以下操作,希望在查询结果中检索到一些信息。该查询实际上插入了该行,但result
返回为undefined
:
var sql = require('mssql');
var connectionConfig = 'xxxxxxxxxxxx';
var insertionQuery = 'xxxxxxxxxxxx';
sql.connect(connectionConfig).then(pool => {
pool
.request()
.query(insertionQuery);
}).then(result => {
//I expect 'result' to have information of the inserted row, but it comes undefined instead
cosole.log(result);
}).catch(err => {
console.err(err);
});
我认为使用存储过程可以解决此问题,但是我只想避免对简单插入使用存储过程。
有人知道插入后如何重新获得新的行ID吗?
编辑
我的确OUTPUT SCOPE_IDENTITY()
在SQL语句中包含了-现在查询如下:
INSERT INTO TABLE (columns...)
OUTPUT SCOPE_IDENTITY()
VALUES (values...)
如果我在SQL Server Management Studio中运行查询,它就可以正常工作,并且返回了新的行ID,但是通过mssql
包的query
方法运行查询时,result
将返回如下所示:
[ { '': null } ]
INSERT
语句不返回记录集,因此recordset
未定义。请参阅文档的本部分,以了解有关如何获取受影响的行数的更多信息。
解决此问题的一种方法是在SELECT
后面添加一个语句,INSERT
并要求SCOPE_IDENTITY()
或@@IDENTITY
。这将为您获取最后插入的对象的ID,即:INSERT INTO table (...) VALUES (...); SELECT SCOPE_IDENTITY() AS id;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句