我有一个关于如何最好地防止重复发布数据的设计模式.
以下是步骤:
>客户端使用唯一的guid提交数据(客户端生成的guid – 保证唯一)
>服务器端软件确保数据库中尚不存在客户端指南
>开始交易
>过程数据(取决于有效负载,可能需要1-20秒)
>提交交易
以下是场景:
客户端使用guid“1”提交数据,然后在执行原始数据提交的步骤(5)之前使用guid“1”重新提交数据,然后处理事务两次.
不使用信号量或阻塞来防止这种情况的最佳设计模式是什么?如果由于某种原因(服务器端的硬件问题等)第一次提交失败,用户应该能够重新提交.
谢谢!
最佳答案 将GUID存储在具有SQL UNIQUE约束的列中.
当您尝试(在事务中)插入第二个重复的GUID时,操作将失败,此时您将回滚整个事务.