奇怪的Trigger(200分)

  • 主题发起人 主题发起人 秦浩天
  • 开始时间 开始时间

秦浩天

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一表中建立了Insert,Delete,Update三个Trigger,
可以根据其中一字段的值自动往另一个表中增加数据
或删改数据(有可能是多条记录)。我在SQL Server7
中改变字段值或是删除数据一切都正常,而在程序中
改变字段值或是删除数据却出现以下错误提示不知是
为什么?
编程工具:Delphi5+ADO+SQL Server7
错误提示:Insufficient on incorrect key column
information ;too many rows affect by update.
 
不知道~~~~~~
 
你没有具体说明前台的程序是怎么写的。
作为一种万能的办法,建议你将和表连接在一起的Table控件关闭,
然后在QUERY中用一条SQL语句来实现
 
too many rows affect by update
可能与表的索引有关。Delphi希望为表指定一个索引或主见。
 
把程序中的SQL用showmessage看看,是否符合您的原意.
>>我在SQL Server7中改变字段值或是删除数据一切都正常
说明Trigger是对的.
>>而在程序中改变字段值或是删除数据却出现...
检查程序.(是否触发了多层Trigger.)
情况太多...
您可以单步执行吗?
 
原因是修改的表或在TRIGGER中被修改的表
在修改前或修改后有完全相同的记录。
这在后端可以运行,在DELPHI中会提示出错。
 
这种情况并不是仅在应用程序中发生,如果你的应用程序先运行并进行数据处理,
再用SQL SERVER Enterprise manager中对表进行数据处理,,同样会有这样的情况发生。

这主要是你的程序对表打开后,进行更新时,引起表的一些属性所致。
 
首先感谢各位热心解答,现在我把问题详细描述一下:
A表是基本情况表:aid, name,sex,birth
(1000,李明,男,1980-01-01)
B表是收费表:bid,aid,start_month,end_month,state
(100,1000,1,6,True)
C表是收费明细表:cid,aid,month
(10,1000,1)
(11,1000,2)
.....
(16,1000,6)
注:bid和cid是自增型。
其中A-B,A-C分别构成主从结构,我已在表B中建立了
Insert,Delete,Update三个Trigger,可以根据state的值
自动往C表中增加数据或删改数据(有可能是多条记录)。
我在SQL Server7中改变State值或是删除B表中的数据一切
都正常,在程序中添加记录正常,而改变State值或是
删除B表记录却出现错误提示。
 
为需要更新的表中的一列建立索引。
 
这个问题我也碰到过
似乎trigger 只会为一次update触发一次,而且只会改写批量输入的
最后一条纪录(inserted 表最后的 一个)
建议每一条要更新的纪录单独更新。
 
问题已自行解决。
 
多人接受答案了。
 
秦同志,你是怎么解决的呢?我也有此问题。
 
后退
顶部