2016-05-16 6 views
1

Я использую nodejs для разбора csv-файла и сохранения информации об этом в mysql. Я пытаюсь вставить данные во многие таблицы, но хочу, чтобы идентификатор, вставленный в базу данных, использовался в запросе anohter?node mysql insert to many to many table

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


         }); 

можно ли вернуть идентификатор, чтобы я мог использовать их в этом запросе?

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, и yes res возвращает все вставленные id, но я хочу использовать эти вставленные id в запросе anohter – user3476614

ответ

1

Если вы используете node-mysql, вы можете просто получить вставленную идентификатор, как это (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, упрощающий написание запросов много. Также он легко позволяет получить доступ к сгенерированным идентификаторам, например.

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