防止重复提交的最佳设计模式是什么?

Chr*_* Mo 5 database design-patterns transactions

我有一个设计模式,我一直在努力解决如何最好地防止重复发布数据。

以下是步骤:

  1. 客户端使用唯一的 guid 提交数据(客户端生成的 guid - 保证唯一)
  2. 服务器端软件确保数据库中尚不存在客户端 guid
  3. 开始交易
  4. 处理数据(可能需要 1-20 秒,具体取决于有效负载)
  5. 提交事务

以下是场景:Client提交guid为“1”的数据,然后在原始数据提交命中步骤(5)之前重新提交guid为“1”的数据,然后事务处理两次。

在不使用信号量或阻塞的情况下防止这种情况的最佳设计模式是什么?用户应该能够重新提交,以防第一次提交由于某种原因(服务器端的硬件问题等)失败。

谢谢!

Dav*_*har 1

将 GUID 存储在具有 SQLUNIQUE约束的列中。

当您尝试(在事务内)插入第二个重复的 GUID 时,操作将失败,此时您将回滚整个事务。