多查询的mysql事务不工作

多查询的mysql事务不工作,mysql,node.js,Mysql,Node.js,我正在使用一个包来简化我的RDS查询,如果我在嵌套查询上使用它,但在使用多个查询时出错,这是我的代码 insert = await rds_client.transaction() .query(`insert into RFP (AccountID, OtherServicesOffered, AssignedTo, Note, CreatedBy,RFPType,RenewalID) values (:AccountID, :OtherServicesOffered, :As

我正在使用一个包来简化我的RDS查询,如果我在嵌套查询上使用它,但在使用多个查询时出错,这是我的代码

insert = await rds_client.transaction()
        .query(`insert into RFP (AccountID, OtherServicesOffered, AssignedTo, Note, CreatedBy,RFPType,RenewalID) values (:AccountID, :OtherServicesOffered, :AssignedTo, :Note, :CreatedBy,:RFPType,:RenewalID)`,
        {
            AccountID:data.AccountID,
            OtherServicesOffered:data.OtherServicesOffered,
            AssignedTo:data.AssignedTo,
            Note:data.Note,
            CreatedBy:data.CreatedBy,
            RenewalID:(data.RenewalID) ? data.RenewalID : null,
            RFPType:(data.RFPType) ? data.RFPType : 0,
        }
    )
     .query((r) => [codestringCurrentlyOffered, {RFPID: r.insertId}] )
     .query((r) => [codestringToBeQuoted, {RFPID: r.insertId}] )
     .commit();
    }
如果我注释掉
.query((r)=>[CodeStringToBequected,{RFPID:r.insertId}])
一切似乎都正常工作,这是我试图同时运行两者时的错误

Cannot add or update a child row: a foreign key constraint fails (`vytaldb`.`RFPToBeQuoted2Product`, CONSTRAINT `RFPToBeQuoted2Product_ibfk_1` FOREIGN KEY 

两个表上都有一个外键冲突,如果我去掉它开始处理两个查询,你知道可能会出现什么问题吗?

问题是
r
只是第二个
query()
调用中第一个
INSERT
查询的结果。在第三次调用中,
r
包含
codestringCurrentlyOffered
的结果,而不是插入到
RFP
中的查询,因此
r.insertid
不是新
RFP
行的ID

因此,您需要在同一
r
变量的范围内执行这两个查询

insert = await rds_client.transaction()
        .query(`insert into RFP (AccountID, OtherServicesOffered, AssignedTo, Note, CreatedBy,RFPType,RenewalID) values (:AccountID, :OtherServicesOffered, :AssignedTo, :Note, :CreatedBy,:RFPType,:RenewalID)`,
        {
            AccountID:data.AccountID,
            OtherServicesOffered:data.OtherServicesOffered,
            AssignedTo:data.AssignedTo,
            Note:data.Note,
            CreatedBy:data.CreatedBy,
            RenewalID:(data.RenewalID) ? data.RenewalID : null,
            RFPType:(data.RFPType) ? data.RFPType : 0,
        }
    );
await insert.query(r => [codestringCurrentlyOffered, {RFPID: r.insertId}] );
await insert.query(r = [codestringToBeQuoted, {RFPID: r.insertId}]);
await insert.commit();

有什么错误?@Barmar Post已更新!这似乎是一个可能的解决方案,但不幸的是得到了同样的错误,所以在上面的解决方案中,我认为r问题仍然存在