使用服务器插入数据时能够回滚更改 API
Ability to rollback changes when insert data using a server API
我目前的情况是:
我构建了一个客户端Java应用程序,用于直接与MySQL数据库通信。当我插入大量数据时,我曾经在 AutoCommit
关闭的情况下执行此操作。这很容易做到,因为我可以直接访问 Connection
。我选择这样做,因为它使我能够在同步过程中出现问题时回滚更改。
现在,应用程序正在发展,我想我最好构建一个与 MySQL 数据库通信的服务器 API。所以,目前,我正在通过 Http 请求插入数据。每个请求打开和关闭一个新的 Connection
.
现在,我希望能够在其中一个请求出错时回滚更改。我假设我不能使用 AutoCommit
,因为这是基于 Connection
,并且每个请求都不同。
谁能告诉我这通常是怎么做的?
我想到了以下几点:
- 首先调用 URL 将
AutoCommit
设置为 false,然后执行所有请求并检查是否有一个失败。但是如果另一个客户端也在同时插入数据,这就会出错。
- 通过一个请求将数据发送到服务器,但这会迫使我彻底改变我的设计。
注意:我知道提问时通常需要一些代码,但我看不出这将如何改进我的问题。但是,如果需要,请随时提出要求。
每个 Web 请求都应该 运行 在它自己的事务中。
在一个请求中发送属于逻辑事务的所有数据,并在请求处理结束时调用提交。
跨越多个 Web 请求的事务不是一个好主意。考虑使从未提交的崩溃客户端。这将使您拥有永远不会关闭的未结交易。
我目前的情况是:
我构建了一个客户端Java应用程序,用于直接与MySQL数据库通信。当我插入大量数据时,我曾经在 AutoCommit
关闭的情况下执行此操作。这很容易做到,因为我可以直接访问 Connection
。我选择这样做,因为它使我能够在同步过程中出现问题时回滚更改。
现在,应用程序正在发展,我想我最好构建一个与 MySQL 数据库通信的服务器 API。所以,目前,我正在通过 Http 请求插入数据。每个请求打开和关闭一个新的 Connection
.
现在,我希望能够在其中一个请求出错时回滚更改。我假设我不能使用 AutoCommit
,因为这是基于 Connection
,并且每个请求都不同。
谁能告诉我这通常是怎么做的?
我想到了以下几点:
- 首先调用 URL 将
AutoCommit
设置为 false,然后执行所有请求并检查是否有一个失败。但是如果另一个客户端也在同时插入数据,这就会出错。 - 通过一个请求将数据发送到服务器,但这会迫使我彻底改变我的设计。
注意:我知道提问时通常需要一些代码,但我看不出这将如何改进我的问题。但是,如果需要,请随时提出要求。
每个 Web 请求都应该 运行 在它自己的事务中。
在一个请求中发送属于逻辑事务的所有数据,并在请求处理结束时调用提交。
跨越多个 Web 请求的事务不是一个好主意。考虑使从未提交的崩溃客户端。这将使您拥有永远不会关闭的未结交易。