Nodejs从mySQL读出生成类_nodejs+mysql插入一条记录时获取自动生成的id

最近在写学生申报项目的后端接口时发现需要获取数据库自动生成的主键,因为要先将项目信息插入到project表,得到生成的项目ID,再将项目ID和指导老师ID插入到project_member表

一开始想在插入项目之后,用SELECT LAST_INSERT_ID() 获取生成的ID,后来发现,在插入操作完成后的返回结果里就带有自动生成的ID。可用rows.insertId获取

代码:

//利用事务对project表和project_member表进行插入

conn.beginTransaction(function(err){

if(err){

sendData(req,res,next,conn,err);

}else{//在project表插入项目信息

conn.query('INSERT INTO project (project_category_id,project_status,project_creator_id,project_name,project_start,' +

'project_end,project_source,project_aid,project_background,project_describe,project_innovation,' +

'project_plan,project_prospect,project_budget,project_resourcerequired)' +

'VALUES ('+category+',0,'+userId+',"'+name+'","'+startTime+'","'+endTime+'",1,"'+aid+'",' +

'"'+background+'","'+describe+'","'+innovation+'","'+plan+'","'+prospect+'","'+budget+'","'+resourcerequired+'")',function(err,rows){

if(err){

conn.rollback(function() {//如果失败回滚

sendData(req,res,next,conn,err);

});

}

var insertId = rows.insertId;//获取自动生成的id

console.log(insertId);

//在member表中插入项目和指导老师的对应关系

conn.query('INSERT INTO project_member (project_id,user_id,project_member_role,project_member_task) ' +

'VALUES ('+insertId+','+teacherId+',2,"指导老师")',function(err,rows){

if(err){

conn.rollback(function() {//如果失败回滚

sendData(req,res,next,conn,err);

});

}

conn.commit(function(err) {//提交事务

if (err) {

conn.rollback(function() {

sendData(req,res,next,conn,err);

});

}

console.log('success!');

var data = {

status:true,

message : "申报成功"

}conn.release();

res.send({"data":data});

});

})

})

})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值