我想知道mysql用户定义变量是否可以使用node.js mysql模块工作。下面的示例突出显示了我希望使用事务实现的目标:
connection.beginTransaction(err => {
if (err) { throw err; }
connection.query('INSERT INTO user SET = ?', {id: 12, username: 'name'}, (err, results) => {
if (err) {
return connection.rollback(function() {
throw error;
});
}
connection.query('SELECT @user_id:=userID FROM user WHERE username = ?', ['name'], (err, results) => {
if (err) {
return connection.rollback(function() {
throw error;
});
}
connection.query('INSERT INTO authentication SET `userID` = @user_id, ?', {password: 'userpassword'}, (err, results) => {
if (err) {
return connection.rollback(function() {
throw error;
});
}
connection.commit(err => {
if (err) {
return connection.rollback(function() {
throw err;
});
}
console.log('success!');
});
});
});
});
});
您可能会想,为什么不在第三个查询中使用第二个查询的结果呢。transaction函数被 Package 在一个实用函数中,该实用函数接受查询作为要使用transaction执行的参数。
如果上面的代码示例不起作用,请提供一种简洁的方法来实现这一点。谢谢您。
1条答案
按热度按时间bqf10yzr1#
在运行代码示例之后,失败不是因为第二个查询中的mysql变量。这个代码示例对我很有用: