nodejs 写一个 mysql2 事务处理函数, 完整的代码
时间: 2024-10-16 11:19:15 浏览: 22
Node.js 中使用 `mysql2` 进行事务处理,你需要先安装 `mysql2` 和 `promise-mysql`(因为 `mysql2` 的 promise 版本更易用于异步操作),可以使用以下命令安装:
```bash
npm install mysql2 promise-mysql
```
接下来是一个基本的 MySQL 事务处理函数示例:
```javascript
const mysql = require('mysql2/promise');
const pool = mysql.createPool({
host: 'your_host',
user: 'your_user',
password: 'your_password',
database: 'your_database'
});
async function transactionalFunction(sqlQueries) {
const connection = await pool.getConnection();
try {
// 开始事务
await connection.startTransaction();
for (const query of sqlQueries) {
// 执行查询并获取结果
await connection.query(query);
}
// 提交事务
await connection.commitTransaction();
console.log("Transaction committed successfully.");
} catch (error) {
// 回滚事务
if (connection && error.code === 'ER_DUP_ENTRY') { // 示例错误代码,实际应用需检查对应错误码
await connection.rollbackTransaction();
console.error("Rolling back due to an error:", error.message);
} else {
throw error;
}
} finally {
// 关闭连接,无论是否成功都会释放资源
await connection.end();
}
}
// 调用事务处理函数
const queries = [
"INSERT INTO table_name (column1, column2) VALUES (?, ?)",
"UPDATE table_name SET column1 = ? WHERE id = ?", // 需要更新的数据
// 更多查询...
];
transactionalFunction(queries).catch(console.error);
阅读全文