节点mssql:SQL插入后返回ID

巴勃罗·拉梅尔(Pablo Lammel)

我正在进行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 } ]
FcoRodr

我引用node-mssql插入返回未定义的记录集

INSERT语句不返回记录集,因此recordset未定义。请参阅文档的本部分,以了解有关如何获取受影响的行数的更多信息。

解决此问题的一种方法是在SELECT后面添加一个语句,INSERT并要求SCOPE_IDENTITY()@@IDENTITY这将为您获取最后插入的对象的ID,即:INSERT INTO table (...) VALUES (...); SELECT SCOPE_IDENTITY() AS id;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章