【发布时间】:2018-12-11 12:59:01
【问题描述】:
我有一个带有两个主表(所有任务)和(进行中)的 Web 应用程序。当您从(所有任务)打开任务时,该项目将移至(进行中)。现在,如果不同电脑上的用户同时打开任务,它会重复。
在你们的意见中,确保不会发生重复的最佳方法是什么。
我目前有一列,如果未处理,则为 0,如果已处理,则为 1,但这仍然给出了 2-3 秒的时间段,可以同时从两台电脑打开任务。
我已经研究了 guid 并使用 sql 事务,尽管我读过这会减慢速度
我希望这是有道理的,我的伙计们
提前致谢
一个小恶魔
【问题讨论】:
-
在数据库中保存新记录时会发生重复。确保在不需要时不要保存记录。
-
您应该检查行是否已经存在,并在此基础上执行操作或丢弃它。
-
使用事务,如果你正确使用它们,它们不应该减慢速度。当第一个用户的事务完成时,第二个用户将等待 2-3 秒,这应该是唯一的减慢速度。您还可以添加一个“进行中”标志,如果它是 0,则在事务中将其设置为 1,然后在处理完成时将其设置回 0,也在事务中。现在第二个用户只会被延迟一瞬间然后会看到“进行中”标志已设置并且无法获取任务?
-
@RichardHansell 所以我目前正在使用一个正在进行的标志,但它允许两个人可以打开相同的任务的 2 秒间隙。我将尝试交易,看看它如何影响性能。谢谢人:)
-
对不起,我没有说清楚。一旦同一任务设法被两台电脑同时打开,在该任务上输入的所有数据都将在数据库中复制,不一定是任务本身。所以我需要一个有效的标志。
标签: javascript c# sql api