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});
                });
            })
        })
    })
时间: 2024-10-03 04:38:08

nodejs+mysql 插入一条记录时获取自动生成的id的相关文章

插入一条记录并获取自增的id

Connection connection = (Connection) dbcp.getConn(); int affectRows = qr.update(connection, sql,params); BigInteger id = BigInteger.ZERO ; id = qr.query(connection, "SELECT LAST_INSERT_ID()", new ScalarHandler(1)); //获取新增记录的自增主键 这个是通过dbutils来获取的

ACCESS-delphi向中插入一条记录报错,但ACCESS不会

问题:在DELPHI中向ACCESS中插入一条记录时,提示“插入错误”,但是取出SQL直接放在ACCESS中插入成功?答:原因是插入语句中的字段名是DELPHI的内部标示符.

使用JDBC一次插入多条记录(以MySQL为例)

阅读本文需要的先修知识: 最基本的SQL语句 最基本的JDBC操作(如插入单条记录) 如急需使用请直接看最后一段代码. 在JDBC中,插入记录最简单的方法是使用executeUpdate()方法,但该方法中的参数只能是单条SQL语句,其实对于需要INSERT或者UPDATE多条记录的情况,JDBC也提供了批量更新的机制. 1.事务 批量更新基于事务处理,JDBC提供了两个方法void commit()和void rollback(),这两个函数的用法正如大部分SQL数据库中提供的事务处理语句一样

一次插入多条记录 [mysql]

调用多次INSERT语句不就可以插入多条记录了吗?但使用这种方法要增加服务器的负荷,因为,执行每一次SQL服务器都要同样对SQL进行分析.优化等操作.幸好MySQL提供了另一种解决方案,就是使用一条INSERT语句来插入多条记录.这并不是标准的SQL语法,因此只能在MySQL中使用. INSERT INTO users(name, age)  VALUES('姚明', 25), ('比尔.盖茨', 50), ('火星人', 600); 上面的INSERT 语句向users表中连续插入了3条记录.

Python Flask 向MySQL表里插入一条记录,提示Unknown column 'XXX' in 'field list

sql =' INSERT INTO `blog`.`user` (`id`, `username`) VALUES (%d, %s)' %(1,username) 我在给username赋值aaabbb后提示:"Unknown column 'aaaabbb' in 'field list'" 找了半天问题,原来是%s没加双引号. 改为如下 sql =' INSERT INTO `blog`.`user` (`id`, `username`) VALUES (%d, "%s

mysql判断一条记录是否存在,如果存在,则更新此语句,如果不存在,则插入

mysql判断一条记录是否存在,如果存在,则更新此语句,如果不存在,则插入 直接上代码 BEGIN #定义一个变量来保存该记录是否存在 declare num int; #这条sql,就是查询对应的记录有多少条,注意 into num 这两句话,就是把count(*) 查出的值,赋给到num中 select count(*) into num from t_count_view where TO_DAYS(now())=TO_DAYS(day); #接下来的就是判断了,注意,判断是否等于,只有一

mysql insert一条记录后 返回创建记录主键id的方法

mysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得到这个自增id的值呢? 方法一:是使用last_insert_id mysql> SELECT LAST_INSERT_ID(); 产生的ID 每次连接后保存在服务器中.这意味着函数向一个给定客户端返回的值是该客户端产生对影响AUTO_INCREMENT列的最新语句第一个 AUTO_INCREMEN

无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)

1.listview入门,自定义的数据适配器 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent&

PHP MySQL 插入多条数据

PHP MySQL 插入多条数据 使用 MySQLi 和 PDO 向 MySQL 插入多条数据 mysqli_multi_query() 函数可用来执行多条SQL语句. 以下实例向 "MyGuests" 表添加了三条新的记录: 实例 (MySQLi - 面向对象) <?php$servername = "localhost";$username = "username";$password = "password";$d