首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

奇怪的触发器有关问题 ,最大值计算不准确,怎么再现有关问题

2013-08-24 
奇怪的触发器问题 ,最大值计算不准确,如何再现问题?使用Sqlserver2000 数据库 程序不断的插入数据到一个表

奇怪的触发器问题 ,最大值计算不准确,如何再现问题?
使用Sqlserver2000 数据库 程序不断的插入数据到一个表中
m_Realdata表,表结构如下:
测点编号       实时值               状态        保存时间
nodeId(int)  value(varchar(50))   status (int) datatime (datetime)

此表不保存数据 而将数据保存在相同结构的月表中   格式如下
101           0.03                   0          2013-8-12 16:38:12
102           0.83                   1          2013-8-12 16:39:32
...           ...                    ...          ......


这个表建了触发器。
CREATE TRIGGER  tgReal_Value  ON dbo.M_RealValue  
instead of   INSERT
As
  begin
   ----任务1:将数据插入到密采数据表中   表结构和m_realvalue结构完全一致
   ----任务2:5分钟统计一次  得到每个测点的最大值和最小值,如 16:35-16:40时间段
   ----任务3: 将报警状态 状态为1的 记录当,状态恢复到0后 插入到报警表中去。
  end

--问题是:
    在实际应用过程中,发现5分钟内统计的最大值有时候不对,比如有一个值很大,但是查询这个时间段的
    5分钟记录找不到!,而平时都有,
   我用游标将月表中的数据 回滚的办法  却可以产生,触发器计算正确!!!
   是什么原因导致的呢?

  请各位高人  判断一下 是触发器写的有问题吗?还是由于负载、性能导致计算失败?
   我查询了一下记录 发现丢失的最大值恰恰是状态为报警状态的记录,但报警表、实时月表
    中都有记录。
  




[解决办法]
每5分钟统计一次,用触发器不合适,触发器是有数据新增、修改、删除的时候才做。
所以应该用JOB来定时运行,这样要写一个存储过程,应该说比触发器简单


[解决办法]
--说实话,从头到尾没看懂
--再说句实话,应该是逻辑问题。不会是负载、性能导致计算失败

[解决办法]
时间比较的时候,不要忽略毫秒值,请再检查一下吧。
[解决办法]
5分钟的统计结果保存在哪?
触发器中怎么判断5分钟到了,该统计了?

估计是程序的逻辑问题..

热点排行