首页 新闻 会员 周边

问一个关于数据插入的“奇怪”问题——一次操作,多次插入

0
悬赏园豆:30 [已关闭问题] 关闭于 2008-12-22 15:43

问题描述:
      页面触发一个事件 EventA,EventA 调用某个方法 MothodB,MothodB 执行一个存储过程 SP_C,SP_C 中执行数据插入工作,只插入一条数据到表 TableD 中。(SP_C 运行时间较长 20s甚至更久

     当我在页面触发  EventA 时(只触发了一次),奇怪的事情发生了:TableD 中插入了三条同样的记录(插入时间不同,时间间隔:8~10 s)

     直接运行存储过程不会发生这种情况,通过应用程序调用则发生。

    为什么???

环境: windows server 2003 + sqlserver 2005

 

问题补充: 再补充下: 是这样的,存储过程里面是一个多表关联查询语句,这个查询语句查询的数据量比较大(大约是2000万条数据)。当我运行另外一个应用程序(也进行查询,耗时2~3分钟)的时候,同时运行我提到的那个应用程序,这时耗时20s左右,而单独运行本应用程序则耗时6S左右。 于是,我便跟踪此存储过程,发现在应用程序耗时20s的时候,存储过程会调用三次,于是我新建了个表,在存储过程里面写个插入语句向这个新表里插入一条数据,运行一次程序之后,发现这个表里面插入了三条数据。
music000的主页 music000 | 初学一级 | 园豆:150
提问于:2008-12-18 17:27
< >
分享
所有回答(4)
0

SP_C只插入一条数据为什么运行20s?

最有可能的是,程序中有bug。建议仔细检查程序。

玉开 | 园豆:8822 (大侠五级) | 2008-12-18 18:15
0

我觉得很有可能是用户重复提交,执行时间过长的方法最好提交时先禁用按钮。免得用户等不及多点几次~我还见过用户喜欢双击的,不管点什么都是双击,都要小心。

BB_Coder | 园豆:797 (小虾三级) | 2008-12-18 18:37
0

楼上说的有道理,尤其是一些耗时比较长的操作,尽量使用异步造作,并再界面上或逻辑层作出重复点击操作的判断!这个在比较重要的应用中很重要!

GUO Xingwang | 园豆:3885 (老鸟四级) | 2008-12-18 23:03
0

有很多种可能

1因为关联多 锁表

2还有就是你看看你类型是否写错了

2005很混蛋 不分varchar和char的

你类型写错了他会自动判断的

但是会变得异常的慢

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2008-12-19 11:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册