2016-05-16 61 views
1

我正在使用nodejs來解析一個csv文件並在mysql中保存它的相關信息。我試圖插入數據到多對多的表,但想要ID插入到數據庫中用於anohter查詢?節點mysql插入多對多表

con.query("INSERT INTO TransactionDescription SET ? ON DUPLICATE KEY UPDATE Description= VALUES(Description)", trandesc, function(err, res) { 
          if (err) throw err; 


         }); 

我可以返回ID的生成,所以我可以在這個查詢中使用它們嗎?

con.query("INSERT INTO Transaction SET ? ", tran, function(err, res) { 
          if (err) throw err; 
         }); 
+0

作爲一個說明,'transaction'對於表來說並不是一個很好的名字,因爲它是一個保留關鍵字。不要忘記'LOAD DATA INFILE'可以直接處理CSV數據,速度非常快。 – tadman

+0

它可能會存儲在回調的res對象中。你有'console.log(res)'來看看包含什麼?另外,知道'con'對象是什麼,它是一個node-mysql?或者某個其他模塊的實例。 – theatlasroom

+0

@theatlasroom con是node-mysq中的連接對象,是的res將返回所有插入的id,但是我想在anohter查詢中使用那些插入的id – user3476614

回答

1

如果您正在使用node-mysql,你可以簡單地得到所插入的ID是這樣的(see doc):

con.query("INSERT INTO TransactionDescription SET ? ON DUPLICATE KEY UPDATE Description= VALUES(Description)", trandesc, function(err, res) { 
    if (err) throw err; 
    // res.insertId from above query as second query parameter 
    con.query("INSERT INTO Transaction SET ? ", res.insertId, function(err, res) { 
    if (err) throw err; 
    }); 
}); 
+0

我的問題是插入是不同事件的一部分 – user3476614

0

我建議使用knex.js從而簡化編寫查詢了很多。此外,它很容易讓你訪問生成的ID,例如

knex.insert({ 
    first_name: firstName, 
    last_name: lastName, 
    email: email, 
    phone_number: phoneNumber 
}) 
.returning('id') 
.into('person') 
.then(function (id) { 
    // use id here 
});