异步SQL操作

我有一个问题,我不知道如何最好地解决。

我有一个应用程序更新数据库以响应临时请求。 其中一项要求特别常见。 请求是一个更新,本身很简单,但有一些复杂的先决条件。

  • 对于这个请求,业务层首先从数据层请求一组数据。
  • 业务逻辑层评估数据库中的数据和请求中的参数,从中确定要执行的操作,并创建请求的响应消息。
  • 业务层现在执行作为请求目的的实际更新命令。
  • 最后一步就是问题所在,该命令依赖于数据库的状态,数据库可能在业务逻辑运行后发生了变化。 将数据读取的数据锁定在数据库的几次往返中似乎也不是一个好主意。 有没有一种“最佳实践”的方式来完成这样的事情? 谢谢!


    简单地说,当你执行更新命令时,你担心数据库可能已经改变了?

    然后调用防御性编写的存储过程,只有当数据在被调用时处于可接受状态(通过检查外键引用,数据完整性等)才会更新。

    让我知道我是否可以帮助嘲笑这方面的某些方面。


    您可以存储修改的业务对象的原始状态,并将原始对象与其数据库对应项进行比较,以检查是否有任何更改。

    如果进行了更改,则可以选择基于原始对象,已修改和已存储(数据库)对象合并对象,或者取消更新并告诉客户端更新失败。


    这很难,因为问题中没有很多细节,所以我只举一个简单的例子,你可能会适用于你的情况。

    加载所有数据以及最后更改的日期(yyyy-mm-dd hh:mi:ss.mmm)

    SELECT AAA,BBB,LastChgDate FROM YourTable WHERE ID=xxxxxx
    

    做你的商业逻辑

    保存数据

    UPDATE YourTable SET AAA=aaaaa,BBB=bbbbb WHERE ID=xxxxxx AND LastChgDate=zzzzzz
    

    如果行数!= 1,那么错误别人已经改变了数据,否则数据被保存。

    链接地址: http://www.djcxy.com/p/45237.html

    上一篇: Asynchronous SQL Operations

    下一篇: GIT: clone works, remote push doesn't. Remote repository over copssh