8.1 事务处理

事务可以用来将操作分组为一个原子单元。在一个事务中的所有操作要么全部成功提交,要么全部失败。只要事务还没有提交,就可以回滚事务。

可以使用 startTransaction() 方法在会话中启动事务,使用 commitTransaction() 方法提交事务,使用 rollbackTransaction() 方法取消或回滚事务。下面是一个示例。该示例假定 test 模式存在,并且 my_collection 集合不存在。

var mysqlx = require('mysqlx');

// Connect to server
var session = mysqlx.getSession( {
  host: 'localhost', port: 33060,
  user: 'user', password: 'password' } );

// Get the Schema test
var db = session.getSchema('test');

// Create a new collection
var myColl = db.createCollection('my_collection');

// Start a transaction
session.startTransaction();
try {
  myColl.add({name: 'Rohit', age: 18, height: 1.76}).execute();
  myColl.add({name: 'Misaki', age: 24, height: 1.65}).execute();
  myColl.add({name: 'Leon', age: 39, height: 1.9}).execute();

  // Commit the transaction if everything went well
  session.commit();

  print('Data inserted successfully.');
}
catch (err) {
  // Rollback the transaction in case of an error
  session.rollback();

  // Printing the error message
  print('Data could not be inserted: ' + err.message);
}