代碼:
var async = require('async');
const mysql = require ('mysql');
var mysqlconfig=require('./config/mysql_config/mysql_config').mysqlconfig;
var connection = mysql.createConnection(mysqlconfig);
var tasks = [function(callback) {
connection.beginTransaction(function(err) {
callback(err);
});
}, function(callback) {
connection.query('INSERT INTO open_tb SET lock_id=?, open_result=?', [1234,'open4'], function(err, result) {
console.log('result:',result);
console.log('result.open_id:',result.insertId);
callback(err, result.insertId); // 生成的ID会传给下一个任务
//callback(err, result); // 生成的ID会传给下一个任务
});
}, function(insertId, callback) {
// 接收到上一条任务生成的ID
console.log('insertId:',insertId);
connection.query('INSERT INTO lock_tb SET lock_id=?, user_id=?', [1234,insertId], function(err, result) {
callback(err);
});
}, function(callback) {
connection.commit(function(err) {
callback(err);
});
}];
async.waterfall(tasks, function(err, results) {
if(err) {
console.log(err);
connection.rollback(); // 发生错误事务回滚
}
connection.end();
});
注意:
result 內容為:
{
fieldCount: 0,
affectedRows: 1,
insertId: 419,
serverStatus: 3,
warningCount: 0,
message: '',
protocol41: true,
changedRows: 0 }