交易

事务是指对一个或多个实体执行的一组操作。每个事务一定是原子性的,因此事务决不会只应用一部分。事务中的所有操作要么全都应用,要么一个也不应用。

使用事务

事务会在 270 秒后或在闲置 60 秒后过期。

以下情况下操作可能失败:

  • 尝试对同一个实体进行太多并发修改。
  • 事务超出资源限制。
  • Datastore 模式数据库遇到内部错误。

在上述所有情况下,Datastore API 都会返回错误。

事务是一项可选功能。执行数据库操作并非必须使用事务。

应用可以在单个事务中执行一组语句和操作,因此,如果任何语句或操作引发异常,系统将不会应用该组中的任何数据库操作。应用会定义要在事务中执行的操作。

以下代码段展示了如何执行事务。该代码段会将资金从一个账户转移到另一个账户。

C#

如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 如需了解详情,请参阅 Cloud Datastore C# API 参考文档

如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证

private void TransferFunds(Key fromKey, Key toKey, long amount)
{
    using (var transaction = _db.BeginTransaction())
    {
        var entities = transaction.Lookup(fromKey, toKey);
        entities[0]["balance"].IntegerValue -= amount;
        entities[1]["balance"].IntegerValue += amount;
        transaction.Update(entities);
        transaction.Commit();
    }
}

Go

如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 如需了解详情,请参阅 Cloud Datastore Go API 参考文档

如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证

type BankAccount struct {
	Balance int
}

const amount =