none
aspx默认是单线程的么 RRS feed

  • 问题

  • 数据插入数据库的时候,用的是一个事务,但竟然同时插入两条记录,连插入时间都一样的。客户端是用ajax,如果上次接收失败,则隔一段时间再发。

    我自己估计是同一时间服务器接到相同的请求,如果是这样,如何避免插入相同数据?

    2010年1月10日 9:53

答案

  • 有必要的,因为如果你的系统用户稍多一些,则很有可以在同一秒钟同时插入数据,会导致后插入的那个数据因为unique约束不成功

    我感觉是你的ajax逻辑有问题.导致重复发送数据

    • 已标记为答案 ogra 2010年1月12日 6:37
    2010年1月12日 1:43
  • 你好!

    你把唯一约束或主键设置到比如你将如“名称”、“编号”这样的列上,这样就是避免你的问题,另外也有可能是你程序上的 bug 造成了现在的问题。
    知识改变命运,奋斗成就人生!
    • 已标记为答案 ogra 2010年1月12日 6:37
    2010年1月12日 4:47
    版主

全部回复

  • IIS 是多线程的.. 你说的这种可能性是完全有的。
    因为即使同一个用户也可以同时使用好几个IIS线程。

    如果需要避免这种情况,把数据库时间这一列设置成unique,当然最好把精度设置为毫秒级的.
    2010年1月11日 1:42
  • 设置数据库的精度是非常有必要的,如果不希望有重复数据,最好设置为unique,当然,你的逻辑可能很有问题。
    我的博客,最近新写了一个Windows Mobile 6.5 Widget开发的文章,欢迎捧场
    尽力回答每一个问题,但不代表一定正确,希望初学者能够多自己尝试。。共勉。。:)
    2010年1月11日 2:48
    版主
  • 我不太明白,将数据库时间设为unique,但又把精度设为毫秒级的。那也是有可能同一数据插入2次,微小的差别可能就是那几毫秒。我想时间设为unique,精度没必要毫秒级吧。

    2010年1月11日 12:26
  • 有必要的,因为如果你的系统用户稍多一些,则很有可以在同一秒钟同时插入数据,会导致后插入的那个数据因为unique约束不成功

    我感觉是你的ajax逻辑有问题.导致重复发送数据

    • 已标记为答案 ogra 2010年1月12日 6:37
    2010年1月12日 1:43
  • 你好!

    你把唯一约束或主键设置到比如你将如“名称”、“编号”这样的列上,这样就是避免你的问题,另外也有可能是你程序上的 bug 造成了现在的问题。
    知识改变命运,奋斗成就人生!
    • 已标记为答案 ogra 2010年1月12日 6:37
    2010年1月12日 4:47
    版主