NODEJS MYSQL ASYNC 整合事务支持

因为项目中要用到事务,而且还要保证sql语句的顺序执行,所以有了下面的代码。也是用了好多种方法,最后决定有下面的,希望能满足你的需求。

// 加载mysqlvar mysql = require(’./mysqlConn’);// 加载mysql-queues 支持事务var queues = require(‘mysql-queues’);// 加载async 支持顺序执行var async = require(‘async’);

var db_tran = function(){// 获取事务queues(mysql);var trans = mysql.startTransaction();

async.series([
    function(insert_cb) { 
    	var insert_sql = "INSERT INTO `shop` (`id`, `name`, `address`, `tel`, `fax`, `mail`, `shop_kbn`, `modified_date`, `modified_id`) VALUES ('18', '1212', '1212', '12', '12', '12', '12', '2013-05-28 16:10:15', '0')";
    	// 执行第一条sql语句 如果出错 直接进入最后的 错误方法 回滚事务
    	trans.query(insert_sql, function(err, info) {
    		insert_cb(err, info);
    	})
    	
    },
    function(update_cb_1) { 
    	var update_sql_1 = "UPDATE `shop` SET `address`='管理会社  1' WHERE `id`='17'";
    	
    	// 执行第二条sql语句 如果出错 直接进入最后的 错误方法 回滚事务
    	trans.query(update_sql_1, function(err, info) {
    		update_cb_1(err, info);
    	})
    },
    function(update_cb_2) {
    	var update_sql_2 = "UPDATE `shop` SET `address`='管理会社  2' WHERE `id`='16'";
    	// 执行第三条sql语句 如果出错 直接进入最后的 错误方法 回滚事务
    	trans.query(update_sql_2, function(err, info) {
    		update_cb_2(err, info);
    	})
    	
    }
], function(err, results) {
	if (err) {
		console.log("rollback");
		// 出错的场合 回滚
		trans.rollback();
	} else {
		// 没有错误的场合 提交事务
		trans.commit();
	}
	
});
// 执行这个事务
trans.execute();

}

原文链接:http://cnodejs.org/topic/51a83cf0555d34c678272214

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值